Django 1.8 如何创建自己的 404 页面?
Posted
技术标签:
【中文标题】Django 1.8 如何创建自己的 404 页面?【英文标题】:Django 1.8 how to create my own 404 page? 【发布时间】:2015-09-01 12:47:49 【问题描述】:我想创建自己的 404 页面。 在 settings.py 我添加了:
DEBUG = TEMPLATE_DEBUG = False
ALLOWED_HOSTS = ['*',]
在 urls.py 中:
handler404 = 'blog.views.handler404'
在views.py中:
def handler404(request):
return render(request, 'blog/404.html')
我还创建了那个 404.html 文件。
当我启动服务器时,我会写:
python manage.py runserver --insecure
--insecure 是提供静态文件(否则就是废话)。但如果我去非现有页面,我会得到:
<h1>Not Found</h1><p>The requested URL /post/9/ was not found on this server.</p>
我该如何解决这个问题? 我正在使用 Django 1.8 不知道这是否会改变任何东西
【问题讨论】:
您可以将自定义的 500.html/404.html 放在模板目录中,django 将使用这些模板而不是默认的 django 模板进行渲染。 但它不起作用 404.html和你base.html在同一个目录吗?否则你的模板路径不正确 是的,在同一个目录中 尝试设置 DEBUG=False 看看是否有任何改变 【参考方案1】:你不应该在 urls.py 中需要任何东西。转到您的根views.py 并在其中添加您的handler404 方法,然后不理会urls.py。
参考:Django, creating a custom 500/404 error page
另外,我没有看到您的 TEMPLATE_DIRS 变量,即
TEMPLATE_DIRS = (
'/path/to/template/files/',
'/path/to/more/template/files/'
)
需要确保您在 ../blog/.. 中的模板被正确找到。我个人会专门将其添加为子目录。
【讨论】:
你好,我没有模板目录变量。我添加了一个新的 - TEMPLATE_DIRS = (os.path.join(BASE_DIR, 'blog/templates/blog/'),) 它是一样的以上是关于Django 1.8 如何创建自己的 404 页面?的主要内容,如果未能解决你的问题,请参考以下文章
找不到 Django 404 错误页面...当前路径与最后一个匹配
如何在 Django 的自定义 404 错误模板中显示传递给 Http404 的消息?