django-cms的自定义错误页面

mrk*_*kre 9 django django-cms

据说使用django-cms时服务器403/404/500错误页面是一项微不足道的任务.按照旧论坛帖子上的说明创建:

from cms.views import details

def custom_404(request):
    response = details(request, 'page-not-found')
    response.status_code = 404
    return response
...
Run Code Online (Sandbox Code Playgroud)

Urls.py有一些像这样的行:

handler404 = 'error_pages.views.custom_404'
...
Run Code Online (Sandbox Code Playgroud)

来自traceback django cms找不到404页面:

File "/home/username/.virtualenvs/venv/lib/python2.7/site-packages/cms/views.py", line 22, in _handle_no_page
    raise Http404('CMS: Page not found for "%s"' % slug)

Http404: CMS: Page not found for "page-not-found"
Run Code Online (Sandbox Code Playgroud)

显然在django-cms中添加了slug所需的自定义页面:'page-not-found'.我错过了一些明显的东西吗 在生产服务器上运行debug=False.运行django-cms 2.4.2(编辑)

也许用硬编码的样式表来提供简单的错误消息会更好吗?

mrk*_*kre 9

走进无数的墙壁过度思考问题后,我只是使用基本的403/404/500处理程序:

from django.utils.functional import curry
from django.views.defaults import *
handler500 = curry(server_error, template_name='500.html')
handler404 = curry(page_not_found, template_name='404.html')
handler403 = curry(permission_denied, template_name='403.html')
Run Code Online (Sandbox Code Playgroud)

为每个错误创建模板,并为样式表添加绝对URL.

问题解决了.在这件微不足道的事情上浪费了很多时间.

  • 在urls.py文件中 (3认同)