Python Django自定义404页面不工作
所以,在我的项目中,我想添加一个自定义的404错误页面,所以我遵循了我在网络上能找到的内容,但似乎没有什么对我有用 以下是我的文件: 设置.pyPython Django自定义404页面不工作,python,django,error-handling,http-status-code-404,Python,Django,Error Handling,Http Status Code 404,所以,在我的项目中,我想添加一个自定义的404错误页面,所以我遵循了我在网络上能找到的内容,但似乎没有什么对我有用 以下是我的文件: 设置.py import os # Django settings for HogwartsMail project. PROJECT_PATH = os.path.realpath(os.path.dirname(__file__)) DEBUG = False TEMPLATE_DEBUG = DEBUG # Hosts/domain names tha
import os
# Django settings for HogwartsMail project.
PROJECT_PATH = os.path.realpath(os.path.dirname(__file__))
DEBUG = False
TEMPLATE_DEBUG = DEBUG
# Hosts/domain names that are valid for this site; required if DEBUG is False
# See https://docs.djangoproject.com/en/1.5/ref/settings/#allowed-hosts
ALLOWED_HOSTS = ["*"]
url.py
urlpatterns = patterns('',
...
)
handler404 = "HogwartsMail.views.error404"
views.py
def error404(request):
return render(request,'404.html')
然而,每当我尝试输入一个随机url时,我得到的不是404错误,而是服务器错误(500)
正如我所说的,我尝试了很多不同的方法,但没有一种对我有效
另外,我遇到的另一个问题是,我加载的页面非常慢,而且它们无法打开样式或图像,因此我假设,当DEBUG=False
时,我需要所有内容都已联机。对吗
def error404(request):
return HttpResponseNotFound(render_to_string('404.html'))
另一个例子是:
def error404(request):
return render(request,'404.html', status=404)
好的,事实证明,除了创建一个404.html页面,我似乎什么都不需要做。通过在中创建,当出现“Page not found”错误时,Django将首先在模板中查找404.html,然后再使用自己的错误页面。我仍然有一个问题,我的静态文件不在网上-当设置
DEBUG=False
时,css文件和我的任何图像都不会出现。除此之外,我的问题已经解决。当DEBUG=False
时,您可以使用python manage.py runserver--unsecure
在本地开发期间为静态文件提供服务
请参阅中的更多信息 在项目文件夹的url.py中添加以下内容,其中帐户(可以是任何应用程序)是同一项目的应用程序: project/url.py
handler404 = 'accounts.views.page_not_found'
def page_not_found(request):
"""
Page not found Error 404
"""
response = render_to_response('404.html',context_instance=RequestContext(request))
response.status_code = 404
return response
在“帐户”视图中添加以下内容:
帐户/视图.py
handler404 = 'accounts.views.page_not_found'
def page_not_found(request):
"""
Page not found Error 404
"""
response = render_to_response('404.html',context_instance=RequestContext(request))
response.status_code = 404
return response
别忘了做必要的进口货。在登台测试时,也不要忘记更改settings.py中的Debug=False。因为我在项目中添加了2个url.py
。因此,我在我的基本url.py
中添加了handler404
。我的父母url.py
看起来像这样
from django.conf.urls import handler404
import myapp
urlpatterns = [
path('', include('myapp.urls')),
path('admin/', admin.site.urls),
]
handler404 = myapp.views.error_404
def error_404(request, exception):
data = {"name": "somthing error"}
return render(request,'myapp/404.html', data)
而error_404
是我的views.py
中的一个视图。像这样
from django.conf.urls import handler404
import myapp
urlpatterns = [
path('', include('myapp.urls')),
path('admin/', admin.site.urls),
]
handler404 = myapp.views.error_404
def error_404(request, exception):
data = {"name": "somthing error"}
return render(request,'myapp/404.html', data)
检查完整教程500错误的回溯是什么?不要在生产中使用允许的_HOSTS=[“*”]@user937284它有什么危险?您没有在urlpatterns中指定吗?尝试添加
(“^404/$”,“HogwartsMail.views.error404”)
所有这些都不起作用,我仍然会收到500个错误。有什么想法吗?需要配置or并进行回溯。