使用 django 2.0 自定义错误页面

use*_*794 0 django python-3.x

这是我在 urls.py 中的代码:

def handler500(request, exception):
    response =  HttpResponseServerError('error.html', {},
                                  context_instance=RequestContext(request))
    response.status_code = 500
    return response
Run Code Online (Sandbox Code Playgroud)

但我有一个:

TypeError: handler500() missing 1 required positional argument: 'exception'
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

编辑 bis 整个代码:

from django.contrib import admin
from django.urls import path
from django.urls import include

from django.conf import settings
from django.conf.urls.static import static
from django.http import HttpResponseServerError

urlpatterns = [path("admin/", admin.site.urls)]
urlpatterns += [path("", include("Exchange.urls"))]

urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)


from django.shortcuts import render_to_response
from django.template import RequestContext


def handler404(request, exception, template_name='404.html'):
    response = render_to_response('404.html', {},
                                  context_instance=RequestContext(request))
    response.status_code = 404
    return response


def handler500(request,exception):
    response =  HttpResponseServerError('error.html', {},
                                  context_instance=RequestContext(request))
    response.status_code = 500
    return response
Run Code Online (Sandbox Code Playgroud)

所以这里是整个 urls.py 文件,看来我的帖子主要是代码,所以我必须添加更多细节,比如这是 django 2.0 版本,或者它在 ubuntu 操作系统上的 python3.6 上运行。

Ral*_*alf 6

如果你看一下docs,它定义了 500 处理程序,只有一个位置参数。

更改您的代码

def handler500(request, exception):
Run Code Online (Sandbox Code Playgroud)

def handler500(request):
Run Code Online (Sandbox Code Playgroud)

让我们知道这是否有效。


只是一个提示:关于自定义错误视图的django 文档建议将您的视图函数放入views.py并只将字符串名称添加到您的urls.py,例如:

# in views.py
def handler500(request):
    ...

# in urls.py
handler500 = 'mysite.views.handler500'
Run Code Online (Sandbox Code Playgroud)