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 页面?的主要内容,如果未能解决你的问题,请参考以下文章