Django 配置404和500页面

方法一、直接templates目录创建特定命名的模板文件

1、主配置文件settings.py中添加模板路径,关闭调试模式 DEBUG = False ,因为调试模式的错误页面是开发下会显示错误信息的,同时设置ALLOW_HOST。

设置后对于404或其他错误请求会显示默认的错误码页面,而不会再显示具体的代码错误了。但是默认的页面只有状态码。所以常常需要自己再写页面。

DEBUG = False
ALLOWED_HOSTS = [*]

2、在templates文件夹下创建404.html和500.html,如果使用这种直接放文件的方法,文件名是django已经规定好了的,不能是其他的名称。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{{ request_path }}
404
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
500
</body>
</html>

测试404和500请求
在这里插入图片描述
在这里插入图片描述

这是一种非常简单的方式。在项目模板文件夹 templates 中创建命名为 404.html 的模板文件即可。这个方式是其实是借用了 Django 的模板查找规则进行的。源码在 django.views.defaults.py 中,方法一不需要设路由,只要新建规定名称的模板就能生效了。

方法二、设置句柄

如果需要更个性化的错误页面,不需要拘泥于特定的模板文件名,可以重新设置句柄。

1、同样的需要先进行方法一的步骤修改setting.py配置及创建html文件

2、添加视图函数,可以添加在项目的views中,也可以另外创建一个python文件 或者直接写在urls中,在哪里不影响,只要能引用到就可以了。我这里是写在项目中了。

# 404
def page_not_found(request, exception):
    return render(request, '404.html')

# 500
def page_error(request):
    return render(request, '500.html')

2、在urls.py设置句柄

(1)可以用字符串直接引用函数,需要加上完整的地址项目文件和函数地址。

handler404="echarts.views.page_not_found"
handler500 = "echarts.views.page_error"

(2)也可以先引入再调用。

from echarts.views import *
handler404=page_not_found
handler500=page_error

3、同样可以访问
在这里插入图片描述
在这里插入图片描述

三、设置 DEBUG=False后静态文件404问题

  • 原因
    当我们在开发django应用时如果设置了 DEBUG = True,那么django便会自动帮我们对静态文件进行路由;但是当我们设置DEBUG = False后,这一功能便没有了,此时静态文件就会出现加载失败的情况,想要让静态文件正常显示,我们就需要配置静态文件服务了。

1、一种是使用文件服务器如nginx来实现:

location /static {
        expires 30d;
        autoindex on;
        add_header Cache-Control private;
        alias /root/myproject/static;
     }

此时我们在应用中加载静态文件的话就只需要这么来写了,以img加载为例:

<img src="/static/images/good.png" alt="My image"/>

具体的介绍和配置在之前的博客里有nginx+uwsgi+django部署,对这种方法这里就不多说了。

2、第二种就是设置django的文件服务的django.views.static.serve()方法

(1)修改setting.py

STATIC_URL = '/static/'

# 存放静态文件的目录,其中也可以包含url
STATICFILES_DIRS= [
    #os.path.join(BASE_DIR,'static'),
]

STATIC_ROOT = os.path.join(BASE_DIR, "static")   # 使用 collectstatic后收集的静态文件的存放绝对路径

(2)修改整个项目的urls.py

from django.conf import settings    ##新增
from django.views.static import serve   ##新增
urlpatterns = [
    re_path(r'^static/(?P<path>.*)$', serve, {'document_root': settings.STATIC_ROOT}, name='static')  ##新增
]

(3)然后在终端执行命令把静态文件收集到 STATIC_ROOT中

python manage.py collectstatic

关于DEBUG模式和静态文件这里写的不是很详细,详细介绍在我另一篇博客里Django中DEBUG模式及static静态文件

参考:
Django 自定义 404 500 等错误页面
Django 配置404页面
Django 项目设置 Debug=False 后静态文件和上传文件404错误问题解决
详解django中的collectstatic命令以及STATIC_URL、STATIC_ROOT配置

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
配置Django404页面,可以按照以下步骤进行操作: 1. 在你的Django项目的根目录下,创建一个名为"templates"的文件夹(如果还没有的话)。 2. 在templates文件夹中创建一个名为"404.html"的HTML文件,这个文件就是你的404页面的模板。 3. 在Django项目的settings.py文件中,找到TEMPLATES设置,添加以下代码: ``` 'DIRS': [os.path.join(BASE_DIR, 'templates')], ``` 这将告诉Django在templates文件夹中查找模板。 4. 在同样的settings.py文件中,找到MIDDLEWARE设置,添加以下代码: ``` 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ``` 这将启用Django的中间件,使得我们能够在视图函数中调用404错误。 5. 在你的views.py文件中,添加一个处理404错误的函数,代码如下: ``` from django.shortcuts import render def handler404(request, exception): return render(request, '404.html', status=404) ``` 这个函数将会在用户访问不存在的页面时被调用,它会返回一个404页面模板。 6. 最后,在Django项目的urls.py文件中,添加以下代码: ``` handler404 = 'your_app_name.views.handler404' ``` 这将告诉Django在处理404错误时调用刚才创建的处理函数。 至此,你的Django项目就已经成功配置404页面
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值