使用 Django,您可以通过在根目录中执行以下操作来覆盖默认的 404 页面urls.py
:
handler404 = 'path.to.views.custom404'
使用基于类的视图时如何做到这一点?我无法弄清楚,文档似乎什么也没说。
我试过了:
handler404 = 'path.to.view.Custom404.as_view'
使用 Django,您可以通过在根目录中执行以下操作来覆盖默认的 404 页面urls.py
:
handler404 = 'path.to.views.custom404'
使用基于类的视图时如何做到这一点?我无法弄清楚,文档似乎什么也没说。
我试过了:
handler404 = 'path.to.view.Custom404.as_view'
没关系,我忘了试试这个:
from path.to.view import Custom404
handler404 = Custom404.as_view()
现在看起来很简单,它可能不值得在 StackOverflow 上提问。
通过在我的自定义 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()
在您的 mainurls.py
中,您只需添加from app_name.views import Custom404
然后设置handler404 = Custom404.as_view()
. 它应该工作