Django 1.11 404 页面,而 Debug=True

Posted

技术标签:

【中文标题】Django 1.11 404 页面,而 Debug=True【英文标题】:Django 1.11 404 Page while Debug=True 【发布时间】:2017-10-28 22:20:33 【问题描述】:

不为难,我只想展示一个带有静态文件的特殊 404 渲染。

如果你设置DEBUG = False你可以在urls.py

中使用
handler404 = 'app.views.handler404'

但它没有静态文件。我不想为简单的应用安装 Web 服务器。

DEBUG = True网址

url(r'^404/$', views.handler400)

没有覆盖默认的找不到页面 (404) 页面。

实现渲染的简单方法是什么?当您在 DEBUG=True 时键入带有静态文件的 localhost/asdfhjfsda 时?

提前谢谢...

【问题讨论】:

【参考方案1】:

我有一个完整的解决方案

我的开发环境: Windows 7、Python 3.5.2、Django 1.11、WAMP 3.0.6(Apache 2.4.23、mod_wsgi)

    假设您有带有静态文件的 error_404.html 模板 创建下一个目录结构(“mysite” - Django 项目根文件夹)
我的网站\ 我的网站\ 设置.py 网址.py 视图.py 静止的\ 错误404\ 文件\ 样式.css 图像.jpg 模板\ 错误404\ error_404.html
    mysite\mysite\settings.py
导入操作系统 调试 = 假 模板 = [ .. 'DIRS': [os.path.join(BASE_DIR, 'templates')], .. ] STATIC_URL = '/静态/' STATIC_ROOT = 'FullPathToYourSite.com/mysite/static/'
    mysite\mysite\urls.py
从 django.conf.urls 导入 handler404, handler500 从 。导入视图 urlpatterns = [..] handler404 = views.error_404 handler500 = views.error_404
    mysite\mysite\views.py
从 django.shortcuts 导入渲染 def error_404(请求): 返回渲染(请求,'error404/error_404.html')
    “error_404.html”中的一些 Jinjo 逻辑(伪代码)
% 加载静态文件 % ... 链接类型="text/css" href="% static 'error404/files/style.css' %" ... img src="% static 'error404/files/image.jpg' %" ...

【讨论】:

我认为 OP 正在通过DEBUG = True 寻求解决方案【参考方案2】:

Django 1.9 发布这篇文章的最简单方法是在您的urls.py

from django.views.defaults import page_not_found

url(r'^404/$', page_not_found, 'exception': Exception())

它想要一个例外,给它一个例外:)

【讨论】:

【参考方案3】:

在 django 1.10 docs:

在 Django 1.9 中更改: page_not_found() 的签名已更改。该函数现在接受第二个参数,即触发错误的异常。异常的有用表示也会在模板上下文中传递。

看看你的 'app.views.handler404' 定义,它可能会遗漏一个参数,也许这就是为什么 r'^404/$'handler 没有为你提供正确的方法调用。

【讨论】:

以上是关于Django 1.11 404 页面,而 Debug=True的主要内容,如果未能解决你的问题,请参考以下文章

Django 1.11 中表单渲染性能不佳

DRF json 404 而不是 html 页面

django http404 详解

Django 404页面未加载

Django:找不到页面(404)

Django 1.11 模型迁移操作不适用