метод формата не присваивает значения строке при импорте в качестве глобальной переменной - PullRequest
0 голосов
/ 05 мая 2020

Я определил некоторые переменные внутри файла с именем queries.py и импортирую их в другой файл с именем views.py. Проблема в том, что формат python не присваивает значения каждой переменной соответствующему заполнителю. Рассмотрим следующие строки кода:

queries.py

main_where_query = ''' where users.deleted_account is null
        and length(users.phone_number) > 2
        and length(users.phone_number) < 20
        and users.phone_number not like '+98888888%'
    '''

messages_where_query = """{0} 
                            and messages.date>'{1}' 
                            and messages.date<'{2}'
                        """
views.py

from .queries import *
def get_activity(request):
    global main_where_query
    global messages_where_query
    messages_where_query.format(main_where_query, str(start_date), str(end_date))
    ....

, и результат будет:

select count(messages.message_id) from messages
                join users on users.id = messages.sender
                {0} 
                            and messages.date>'{1}' 
                            and messages.date<'{2}'

                and messages.media_type = 0

Как видите, все заполнители остались нетронутыми, например {0} {1 } {2} . Я уверен, что эти переменные не пусты и импортированы правильно.

1 Ответ

1 голос
/ 05 мая 2020

Я думаю, проблема возникает из-за того, что вы форматируете messages_where_query на месте, а format работает не так. Вам нужно установить messages_where_query на себя после форматирования. Кроме того, вам не нужно использовать ключевое слово global; вы уже импортировали их из другого файла, поэтому они не являются глобальными переменными сами по себе

Ваш views.py скрипт должен выглядеть так:

from .queries import *
def get_activity(request):
    global main_where_query
    global messages_where_query
    messages_where_query = \
        messages_where_query.format(main_where_query, str(start_date), str(end_date))
    ....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...