我遇到了另一个奇怪的行为,不确定为什么会发生…
我不会完全写我在做什么,基本上我有一个视图2种情况:默认情况下,当搜索采取今天的日期默认情况下,如果没有指定,第二个是我指定什么日期,我想看到并得到一个查询…
这里是url。py: url(r'^$', index),
url(r'^(?P<month>d{1,2})/(?P<day>d{1,2})/(?P<change>prev|next)/$', index),
这里是views.py:
def index(request, month = date.today().month, day = date.today().day, change=None):
# apply next / previous change
if change in ("next", "prev"):
now, mdelta = date(date.today().year, int(month), int(day)), timedelta(days=1)
if change == "next": mod = mdelta
elif change == "prev": mod = -mdelta
month, day = (now+mod).timetuple()[1:3]
someData= SomeModel.objects.filter(
date__exact = date(date.today().year, int(month), int(day))
)
return render_to_response('someapp_index.html',RequestContext(request,{'next':request.path, 'someData':someData, 'month': month, 'day':day}))
发生的事情是,由于某种原因,当24小时过去,第二天来了,someData没有更新到第二天。因此,例如,如果今天是15和24小时过去了,并且已经是16,那么您期望在刷新时someData将被1月16日过滤,但它仍然被15过滤,因为月和日从我启动或重新启动uwsgi服务器....的那一刻起保持不变? ! ? ! ? ! ? ! ?
我试着把那些日期。今天().dat/月作为变量传递在url文件,它有绝对相同的效果....
我是唯一一个有这个问题的人,它不应该发生,或者它应该表现得像这样,你不能放date.today()对象吗?
def index(request, month = date.today().month, day = date.today().day, change=None):
^^^^^^ called upon init ^^^^^^
是的,你的月/日值在服务器初始化时初始化。
如果您想要默认值,将它们设置为None
,如果它们是None
,则在视图中调用date.today()
。
将date.today()
作为参数传递给函数将强制对其进行求值。这与向函数传递一个特定的值相同。
改变
def index(request, month=None, day=None, change=None):
if month is None:
month = date.today().month