具有多个应用程序的My Django项目的通用404和500页面

时间:2019-11-15 09:15:37

标签: python django http-status-code-404

我正在开发一个包含多个应用程序的Django项目。我希望所有应用程序都有一个常见的404和500错误页面。我该怎么办?

我已经为每个应用实现了单独的错误页面,并且运行正常。但是我想要一个公共页面,该页面应该放在我的主项目文件夹中。

2 个答案:

答案 0 :(得分:0)

在您的模板目录中创建模板custom404.htmlcustom500.html

将此内容添加到您的urls.py底部(如果特定于应用程序),或者添加到urls.py中,其中您包含其他应用程序的网址

handler404 = 'custom_views.handler404'
handler500 = 'custom_views.handler500'

并一次在custom_views文件的根目录中定义这样的视图

from django.shortcuts import render_to_response

def handler404(request, *args, **kwargs):
    response = render_to_response('custom404.html', context = {})
    response.status_code = 404
    return response


def handler500(request, *args, **kwargs):
    response = render_to_response('custom500.html', context={})
    response.status_code = 500
    return response

这会将您的404,500网址路由到您正在构建模板并呈现模板的模板视图中

答案 1 :(得分:0)

最简单的方法是在templates中创建一个BASE_DIR目录,即包含manage.py的目录
在设置中将路径添加到该目录

TEMPLATES = [
    {
        ...
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        ...
]

然后只需在templates目录中创建错误页面即可。
示例:如果要为错误404创建页面,请在templates目录内创建一个名为404.html的文件。