没有让事情变得困难,我只想展示一个带有静态文件的特殊404渲染。
如果设置DEBUG = False
,则可以使用 urls.py
handler404 = 'app.views.handler404'
但它没有静态文件。我不想为简单的应用程序安装Web服务器。
网址
中的DEBUG = True
url(r'^404/$', views.handler400)
未覆盖默认的 页面未找到(404) 页面。
实现渲染的简单方法是什么?当 DEBUG = True 时,使用staticfiles键入 localhost / asdfhjfsda ?
提前致谢...
答案 0 :(得分:6)
Django 1.9发布后的最简单方法是在urls.py
:
from django.views.defaults import page_not_found
url(r'^404/$', page_not_found, {'exception': Exception()})
它想要一个例外,给它一个例外:)
答案 1 :(得分:2)
我有一个完整的解决方案
我的开发环境: Windows 7,Python 3.5.2,Django 1.11,WAMP 3.0.6(Apache 2.4.23,mod_wsgi)
mysite\ mysite\ settings.py urls.py views.py static\ error404\ files\ style.css image.jpg templates\ error404\ error_404.html
import os DEBUG = False TEMPLATES = [{ .. 'DIRS': [os.path.join(BASE_DIR, 'templates')], .. }] STATIC_URL = '/static/' STATIC_ROOT = 'FullPathToYourSite.com/mysite/static/'
from django.conf.urls import handler404, handler500 from . import views urlpatterns = [..] handler404 = views.error_404 handler500 = views.error_404
from django.shortcuts import render def error_404(request): return render(request, 'error404/error_404.html')
{% load staticfiles %} ... link type="text/css" href="{% static 'error404/files/style.css' %}" ... img src="{% static 'error404/files/image.jpg' %}" ...
答案 2 :(得分:0)
在django 1.10 docs中:
在Django 1.9中更改: page_not_found()的签名已更改。该函数现在接受第二个参数,即触发错误的异常。在模板上下文中也传递了一个有用的异常表示。
查看您的'app.views.handler404'
定义,它可能会错过参数,也许这就是为什么r'^404/$'
处理程序没有为您提供正确的方法调用的原因。