Django - 用不同的签名覆盖TemplateView.get是一种不好的做法吗?

时间:2017-04-12 07:54:57

标签: django pylint

我写了一个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

用其他签名覆盖一个不好的做法?如果是的话,我该如何实施这样的事情?

1 个答案:

答案 0 :(得分:1)

签名应该相同,但是如果在调用超类方法时弹出它们,则可以添加自定义args和kwargs。 View(子类)的实际方法签名是get(self,request,* args,** kwargs)。