我想向客户展示我的网站示例,它还没有完全完成,但对我来说,隐藏错误并且不显示我的代码库非常重要,如果在开发模式下发生服务器错误,django 会执行哪些操作。就像这样 - Django 描述出了什么问题
此外,我无法将 DEBUG = False 设置为 false,因为在这种情况下,媒体文件不会显示,因为它们当前正在本地提供。如果 DEBUG = False,则不会提供服务。
那么有没有一种方法可以在 DEBUG = False 的情况下在本地提供媒体文件,或者在 DEBUG = True 的情况下显示自定义 404 和 500 页面。
只需将其添加到您的网址中即可:
import django
def custom_page_not_found(request):
return django.views.defaults.page_not_found(request, None)
def custom_server_error(request):
return django.views.defaults.server_error(request)
urlpatterns = [
# .....
path("404/", custom_page_not_found),
path("500/", custom_server_error),
#.....
]
我没有提到,但您需要在模板目录中拥有自定义的
404.html
和 500.html
模板。
我建议您替换标准的 Django 404 页面暂时。
在您的虚拟环境中,可以在
(yourenvironmentname)/lib/python3.8/site-packages/django/views/templates
找到 Django 404 模板的路径,名称为 Technical_404.html 和 Technical_500.html。
将以下文件替换为您的自定义 404 和 500 页面。
另一种方法是使用django中间件,这里是一个例子:
# put this at the end of settings file
from django.http import HttpResponseNotFound
class Custom404ErrorMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
response = self.get_response(request)
if response.status_code == 404:
response = HttpResponseNotFound('Page not found...')
return response
MIDDLEWARE.append("my_project.settings.Custom404ErrorMiddleware")