Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 未显示自定义页面404,但显示页面500_Python_Django - Fatal编程技术网

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

Python 未显示自定义页面404,但显示页面500,python,django,Python,Django,当我加载一个不存在的url时,404页不会显示,而是显示500页。下面是我的设置你能引导我打开Django来显示404页面吗?谢谢 Ubuntu服务器16.04;Python 3.5.2;Django 2.0 cat contatoproj/url.py from django.contrib import admin from django.urls import path from django.conf.urls import url from django.conf.urls impor

当我加载一个不存在的url时,404页不会显示,而是显示500页。下面是我的设置你能引导我打开Django来显示404页面吗?谢谢

Ubuntu服务器16.04;Python 3.5.2;Django 2.0

cat contatoproj/url.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
from django.shortcuts import render
from django.http import HttpResponse
from django.template import RequestContext
from django.contrib import messages
from django.core.mail import send_mail, BadHeaderError
from django.http import HttpResponse, HttpResponseRedirect
from django.conf import settings
from contatoapp.forms import ContatoForm

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

def error_500(request):
    data = {}
    return render(request, 'ops500.html', data)
DEBUG = False
ALLOWED_HOSTS = ['*']
cat contatoapp/views.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
from django.shortcuts import render
from django.http import HttpResponse
from django.template import RequestContext
from django.contrib import messages
from django.core.mail import send_mail, BadHeaderError
from django.http import HttpResponse, HttpResponseRedirect
from django.conf import settings
from contatoapp.forms import ContatoForm

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

def error_500(request):
    data = {}
    return render(request, 'ops500.html', data)
DEBUG = False
ALLOWED_HOSTS = ['*']
$ls-洛杉矶模板/运营*

-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
cat contatoproj/settings.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
from django.shortcuts import render
from django.http import HttpResponse
from django.template import RequestContext
from django.contrib import messages
from django.core.mail import send_mail, BadHeaderError
from django.http import HttpResponse, HttpResponseRedirect
from django.conf import settings
from contatoapp.forms import ContatoForm

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

def error_500(request):
    data = {}
    return render(request, 'ops500.html', data)
DEBUG = False
ALLOWED_HOSTS = ['*']

如果您因缺少页面而收到500个错误,那么这是因为Django尝试处理该响应时发生了错误

从您的代码来看,这可能是因为404错误处理程序定义错误-它需要接受第二个缺少的
异常
参数。将其更改为:

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

还请注意,您应该返回一个,否则客户端将不会收到HTTP 404响应。

如果您因缺少页面而收到500个错误,那么这是因为Django尝试处理该响应时发生了错误

从您的代码来看,这可能是因为404错误处理程序定义错误-它需要接受第二个缺少的
异常
参数。将其更改为:

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

还请注意,您应该返回,否则客户端将不会收到HTTP 404响应。

您在处理404的过程中遇到错误。这意味着你会得到500分

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


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

您在处理404的过程中遇到错误。这意味着你会得到500分

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


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

这是正确的答案。实现404和500处理程序仅适用于非常专业的用例。这是正确的答案。实现404和500处理程序仅适用于非常专业的用例。