django:handler404和TemplateView.as_view

时间:2015-03-12 03:24:41

标签: python django

我想优化我的代码:

# --- views.py ---
def error_page_404(request):
    return render(request, '404.html', status=404)


# --- urls.py ---
handler404 = 'main.views.error_page_404'

urlpatterns = patterns('',
    # ...
    url(r'^404$', 'main.views.error_page_404'),
    # ...
)

我的新代码:

# --- urls.py ---
handler404 = TemplateView.as_view(template_name="404.html", status_code=404)
urlpatterns = patterns('',
    # ...
    url(r'^404$', handler404),
    # ...
)

新代码的优点是我们不需要views.py中的视图(对于404,403,500模板)。 不幸的是,这段代码对我不起作用。 我收到错误:

    TemplateView() received an invalid keyword 'status_code'. as_view only accepts arguments that are already attributes of the class

如果使用“status”,那么它也是错误的。 怎么回事?有人帮帮我吗? :)

1 个答案:

答案 0 :(得分:1)

您不需要此任务的任何自定义视图。使用django的内置:

url(r'^404/$', 'django.views.defaults.page_not_found'),