如何使用基于类的视图为Django指定自定义404视图?

时间:2013-03-01 02:39:19

标签: python django http-status-code-404

使用Django,您可以在根urls.py中执行此操作来覆盖默认的404页面:

handler404 = 'path.to.views.custom404'

使用基于类的视图时如何执行此操作?我无法弄清楚,文档似乎没有说什么。

我试过了:

handler404 = 'path.to.view.Custom404.as_view'

3 个答案:

答案 0 :(得分:24)

没关系,我忘了试试这个:

from path.to.view import Custom404
handler404 = Custom404.as_view()

现在看起来很简单,它可能不值得在StackOverflow上提问。

答案 1 :(得分:2)

通过在我的自定义404 CBV中使用以下代码来管理它(在其他StackOverflow帖子上找到它:Django handler500 as a Class Based View

from django.views.generic import TemplateView


class NotFoundView(TemplateView):
    template_name = "errors/404.html"

    @classmethod
    def get_rendered_view(cls):
        as_view_fn = cls.as_view()

        def view_fn(request):
            response = as_view_fn(request)
            # this is what was missing before
            response.render()
            return response

        return view_fn

在我的根URLConf文件中,我有以下内容:

from apps.errors.views.notfound import NotFoundView

handler404 = NotFoundView.get_rendered_view()

答案 2 :(得分:0)

在主urls.py中,您只需添加from app_name.views import Custom404 然后设置handler404 = Custom404.as_view()。 它应该可以工作

相关问题