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

Django - Is overriding TemplateView.get with different signature a bad practice?

我写了一个 Django 应用程序,其中 JobView 继承自 TemplateView。 get 方法需要一个附加参数 (job_id),它位于 URL 中。基本上,我的 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

用其他签名覆盖是一种不好的做法吗?如果是,我应该如何实现这样的事情?

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