【问题标题】:Django 3.2 how to redirect 404 to homepageDjango 3.2如何将404重定向到主页
【发布时间】:2021-11-03 11:00:38
【问题描述】:

我确实找到了一些关于 Django 的 404 重定向的答案,但大多数都指的是旧版本的 Django。

这是我在 Django 3.2.6 中所拥有的 DEBUG 设置为 False 以触发 404 行为

urls.py

 handler404 = views.view_404

views.py

 def view_404(request, exception=None):
     return HttpResponseRedirect("/")

runserver 中没有错误,但 404 页面仍然返回“未找到”

在此服务器上找不到请求的资源。”。

【问题讨论】:

  • docIf you implement a custom view, be sure it accepts request and exception arguments and returns an HttpResponseNotFound.中提到的
  • @Prakhar 我应该在哪里添加这个?我很困惑,因为文档并没有真正讨论我的案例(重定向到主页)。这很有趣,因为我认为很多用户会喜欢这种行为 :)
  • 这段代码handler404 = views.view_404必须在站点urls.py文件中,而不是在应用程序urls.py中。
  • @May.D 啊,太好了,随时写一个快速回复。现在一切正常:)

标签: python django


【解决方案1】:

试试这个:

urls.py

handler404 = 'myappname.views.view_404'

views.py

 def view_404(request, exception=None):
      return HttpResponseRedirect("/")

请注意,要显示自定义模板,您只需在主模板目录中创建一个名为 404.html 的模板。 有关说明,您可以阅读documentation

【讨论】:

  • 感谢您的回复,问题是关于重定向到主页,因此重定向不需要 404.html
  • @devnull 答案没问题。我知道在您的情况下覆盖模型没有用,但我添加了该注释,因为也许有些读者不需要创建自定义视图而只需要创建一个模板。
【解决方案2】:

您遇到的问题是您在应用程序urls.py 文件中定义了您的handler404

您需要将其移至项目urls.py 文件以使其正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-02
    • 1970-01-01
    • 2021-08-09
    • 1970-01-01
    • 2014-03-20
    • 1970-01-01
    • 2015-03-25
    • 2014-12-17
    相关资源
    最近更新 更多