我在名为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}。我确信这些变量不是空的,并且导入正确。
我认为问题的出现是因为您正在对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))
....