我正在寫一個比賽應用程序。比賽在特定日期的午夜結束。我想讓應用程序自動從以下位置切換:使用CookieWizardView
,從formtools
;從通用視圖庫到正常的TemplateView
。如何更改某個URL在某個日期後解析的視圖?
目前我的URL模式相關的部分看起來像這樣:
urlpatterns += patterns('',
url(r'^$', 'appname.views.contest'), # the CookieWizardView
)
,我想它,在一定日期後,充當雖然它看起來像這樣:
urlpatterns += patterns('',
url(r'^$', 'appname.views.contestclosed'), # a TemplateView
)
我完全是,完全是罰款有一個硬編碼的魔術數字,我只是不想在當天午夜起牀!
~~
我解決了這個,但不能回答我的問題,因爲我太新。
我在views.py
做了一個功能:
def contest_switcher(request):
if datetime.datetime.now() < datetime.datetime(YEAR_OVER, MONTH_OVER, DAY_OVER):
return contest(request)
else:
return contestclosed(request)
這確實的伎倆,現在我URLPATTERN是:
urlpatterns += patterns('',
url(r'^$', 'appname.views.contest_switcher'),
)
我也有我的比賽封閉視圖中添加的功能,雖然,因爲它不期望發佈POST,如果有人在半夜試圖填寫比賽表格,可能會發生這種情況:
class ContestClosedView(TemplateView):
template_name = "appname/closed.html"
def post(self, *args, **kwargs):
return self.get(*args, **kwargs)
contestclosed = ContestClosedView.as_view()
爲什麼你不只是比較視圖本身的日期,並變更爲模板呈現(並與什麼上下文)?? –