目录结构
特别说明:我的views.py 已做了拆分
myproject/
myproject/
settings.py
urls.py
myapp/
templates/
myapp/
404.html
views/
index.py
step1
在myapp目录下创建文件夹templates/myapp, 创建404.html 模板
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>404 not found</title>
</head>
<body>
<h1>
页面不存在
</h1>
</body>
</html>
step2
修改 myproject/settings.py
DEBUG = True 更改为 DEBUG = False
ALLOWED_HOSTS = [] 更改为 ALLOWED_HOSTS = ['*']
step3
在 myapp/views/Index.py 增加函数page_not_found
from django.shortcuts import render
#少了参数exception,服务器报错:The custom handler404 view 'myapp.views.Index.page_not_found' does not take the correct number of arguments (request, exception)
def page_not_found(request, exception):
return render(request, 'myapp/404.html', status=404)
记得添加 HTTP状态码 status=404
step4
在myproject/urls.py 添加 handler404
import myapp
urlpatterns = [
path('admin/', admin.site.urls),
]
handler404 = myapp.views.Index.page_not_found
在浏览器中输入不存在的url 路径,则会显示自定义的404页面