自定义页面404未显示,但页面500显示

2024-10-03 09:08:57 发布

您现在位置:Python中文网/ 问答频道 /正文

当我加载一个不存在的url时,404页不显示,而是显示500页。低于我的设置。请您引导我打开Django以显示404页吗?谢谢

Ubuntu服务器16.04;Python 3.5.2;Django 2.0

猫接触项目/网址.py

from django.contrib import admin
from django.urls import path
from django.conf.urls import url
from django.conf.urls import include
from django.conf.urls import handler404, handler500
from contatoapp import views
from contatoapp import views as myapp_views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$', views.index, name='index'),
    url(r'^contato', views.contato, name='contato'),
]

handler404 = myapp_views.error_404
handler500 = myapp_views.error_500

cat contatoapp公司/视图.py

^{pr2}$

$ls-la模板/操作*

-rwxr-xr-x 1 admweb admweb 614 Dec 13 15:31 templates/ops404.html
-rwxr-xr-x 1 admweb admweb 614 Dec 13 15:29 templates/ops500.html

猫接触项目/设置.py

DEBUG = False
ALLOWED_HOSTS = ['*']

Tags: 项目djangofrompyimporturladminconf
2条回答

你在处理404的过程中遇到了一个错误。这意味着你得到的是500英镑。在

由于在500或404视图中没有做任何特殊的操作,因此不需要使用handler404/500为它们显式定义处理程序视图。在

相反,您应该在templates目录中定义404.html和{}。Django将使用这些而不是默认模板,并且您不需要正确地重新实现404和500个视图。在

如果缺少页面会出现500个错误,那是因为Django试图处理该响应时发生了错误。在

从代码来看,这可能是因为404错误处理程序定义错误-它需要接受第二个丢失的exception参数。更改为:

def error_404(request, exception):
    data = {}
    return render(request, 'ops404.html', data)

还要注意,您应该返回一个^{},否则客户端将不会收到HTTP404响应。在

相关问题 更多 >