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 1.8 为特定位置上传文件

找不到 Django 404 错误页面...当前路径与最后一个匹配

如何在 Django 的自定义 404 错误模板中显示传递给 Http404 的消息?

Django 404页面未加载

如果 url 模式不匹配,Django 如何重定向到 404 页面

如何在 django 中自定义找不到页面(404)?