Python 在Djago中混合使用基于类和基于函数的视图是可以接受的做法吗?

Python 在Djago中混合使用基于类和基于函数的视图是可以接受的做法吗?,python,django,django-views,Python,Django,Django Views,我的项目使用基于类的视图,但我无法使用这种方法构建自定义的500错误页面 使用基于类的视图: client\u interface/views/errors/server\u error\u view.py: from django.shortcuts import render from django.views import View class ServerErrorView(View): def get(request): return render(requ

我的项目使用基于类的视图,但我无法使用这种方法构建自定义的500错误页面

使用基于类的视图:

client\u interface/views/errors/server\u error\u view.py

from django.shortcuts import render
from django.views import View


class ServerErrorView(View):
    def get(request):
        return render(request, "client_interface/errors/500.html")
from client_interface.views.errors.server_error_view import ServerErrorView
handler500 = ServerErrorView.as_view()
url.py

from django.shortcuts import render
from django.views import View


class ServerErrorView(View):
    def get(request):
        return render(request, "client_interface/errors/500.html")
from client_interface.views.errors.server_error_view import ServerErrorView
handler500 = ServerErrorView.as_view()
它总是返回
?:(url.E007)自定义handler500视图“client\u interface.views.errors.server\u error\u view.ServerErrorView”的参数数(request)不正确。
我尝试将
get
方法的参数更改为
(self,request)
,或
(*args)
,但错误依然存在

另一方面,如果我使用基于函数的视图:

客户端界面/视图/错误/服务器错误视图

from django.shortcuts import render


def custom_error_view(request):
    return render(request, "client_interface/errors/500.html", {})
url.py

handler500 = 'client_interface.views.errors.server_error_view.custom_error_view'
一切正常


现在,我想知道是否可以使用一个基于函数的视图,而应用程序的其余部分将基于类,或者这在django world中是一种犯罪。

您的
get
类方法缺少类实例的参数,因此:

类服务器错误视图(视图):
def get(自我,请求):
返回渲染(请求“客户端接口/errors/500.html”)

django的最佳实践是将GET方法定义为
GET(self、request、*args、**kwargs)
您的
GET
类方法缺少类实例的参数,因此:

类服务器错误视图(视图):
def get(自我,请求):
返回渲染(请求“客户端接口/errors/500.html”)
django的最佳实践是将GET方法定义为
GET(self、request、*args、**kwargs)

django有一个

如果需要,可以在根模板目录中创建
500.html
模板。基本上,您不必为此创建视图

回答您的问题:如果您知道自己在做什么,使用基于类的视图和基于函数的视图是可以的。只要清楚你的想法,以便其他开发人员或你自己以后能够理解这个想法并轻松地维护你的代码。

Django有一个

如果需要,可以在根模板目录中创建
500.html
模板。基本上,您不必为此创建视图

回答您的问题:如果您知道自己在做什么,使用基于类的视图和基于函数的视图是可以的。只需明确你的想法,以便其他开发人员或你自己以后能够理解这个想法并轻松维护你的代码。

不幸的是,bot
get(self,request)
get(self,request,*args,**kwargs)
仍会抛出相同的错误:
自定义handler500视图的“客户端”接口。视图。错误。服务器错误视图。服务器错误视图”的参数数(请求)不正确。
不幸的是,bot
get(self,request)
get(self,request,*args,**kwargs)
仍然抛出相同的错误:
自定义handler500视图“客户端\u接口.视图.错误.服务器\u错误\u视图.服务器错误视图”的参数数(请求)不正确。