我写了一个Django应用程序,其JobView
继承自TemplateView
。 get方法需要URL中的附加参数(job_id)。基本上,我的urls.py
看起来像这样:
# urls.py
from django.conf import url
from .views import JobView
urlpatterns = [
url(r'^job/(?P<job_id>[0-9]+)$',
JobView.as_view())
views.py包含JobView的定义:
# views.py
from django.views.generic import TemplateView
from django.http import HttpResponse
class JobView(TemplateView):
def get(self, request, job_id):
# Some stuff
return HttpResponse("something")
使用pylint检查此代码时,出现此错误:[arguments-differ] Arguments number differs from overriden 'get' method
。
要符合TemplateView.get
方法,JobView.get
的定义应为:
class JobView(TemplateView):
def get(self, request):
# Some stuff
用其他签名覆盖一个不好的做法?如果是的话,我该如何实施这样的事情?
答案 0 :(得分:1)
签名应该相同,但是如果在调用超类方法时弹出它们,则可以添加自定义args和kwargs。 View(子类)的实际方法签名是get(self,request,* args,** kwargs)。