完全按照 此处 找到的教程,我无法创建自定义 500 或 404 错误页面。如果我确实输入了错误的 url,该页面会给我默认的错误页面。是否有任何我应该检查的内容会阻止显示自定义页面?
文件目录:
mysite/
mysite/
__init__.py
__init__.pyc
settings.py
settings.pyc
urls.py
urls.pyc
wsgi.py
wsgi.pyc
polls/
templates/
admin/
base_site.html
404.html
500.html
polls/
detail.html
index.html
__init__.py
__init__.pyc
admin.py
admin.pyc
models.py
models.pyc
tests.py
urls.py
urls.pyc
view.py
views.pyc
templates/
manage.py
在 mysite/settings.py
我启用了这些:
DEBUG = False
TEMPLATE_DEBUG = DEBUG
#....
TEMPLATE_DIRS = (
'C:/Users/Me/Django/mysite/templates',
)
在 mysite/polls/urls.py
内:
from django.conf.urls import patterns, url
from polls import views
urlpatterns = patterns('',
url(r'^$', views.index, name='index'),
url(r'^(?P<poll_id>\d+)/$', views.detail, name='detail'),
url(r'^(?P<poll_id>\d+)/results/$', views.results, name='results'),
url(r'^(?P<poll_id>\d+)/vote/$', views.vote, name='vote'),
)
我可以发布任何其他必要的代码,但是如果我使用错误的 url,我应该更改什么以获得自定义 500 错误页面?
原文由 reZach 发布,翻译遵循 CC BY-SA 4.0 许可协议
在您的主要
views.py
添加您自己的以下两个视图的自定义实现,并使用您要显示的内容设置模板 404.html 和 500.html 。使用此解决方案,无需将自定义代码添加到
urls.py
这是代码:
更新
handler404
和handler500
是在django/conf/urls/__init__.py
中找到的导出的 Django 字符串配置变量。这就是上述配置有效的原因。要使上述配置生效,您应该在
urls.py
文件中定义以下变量,并将导出的 Django 变量指向定义这些 Django 功能视图的字符串 Python 路径,如下所示:Django 2.0 更新
在 Django 2.0 中更改了处理程序视图的签名: https ://docs.djangoproject.com/en/2.0/ref/views/#error-views
如果您使用上述视图,handler404 将失败并显示消息:
在这种情况下修改你的观点是这样的: