0

我遇到的另一个奇怪的行为,并不确定它为什么会发生......

我不会完全写出我在做什么,基本上我对 2 种情况有一个看法:默认情况下,搜索采用今天的日期,如果没有指定,则默认情况下,第二个是我指定我想查看的日期并获得查询...

所以这里是 urls.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 服务器.... ?!?!?!?!?

我尝试将这些 date.today().dat/month 作为变量传递到 url 文件中,它具有完全相同的效果....

我是唯一一个有这个问题的人吗?它不应该发生,或者它应该表现得像这样,你不能放 date.today() 对象?

4

1 回答 1

2
def index(request, month = date.today().month, day = date.today().day, change=None):
                                ^^^^^^ called upon init   ^^^^^^ 

是的,您的月/日值是在服务器初始化时初始化的。

None如果您想要默认值,请将它们设置为,date.today()如果它们是,则在您的视图中调用None

date.today()作为参数传递给函数将强制对其进行评估。这与向函数传递一个特定值相同。

改成

def index(request, month=None, day=None, change=None):
      if month is None:
          month = date.today().month
于 2013-01-16T00:29:49.600 回答