0
我用TemplateView
繼承了一個JobView
的Django應用程序。 get方法需要一個額外的參數(job_id),它在URL中。基本上,我urls.py
看起來是這樣的:Django - 重寫TemplateView.get與不同的簽名是一種不好的做法?
# 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包含工作視圖的定義:
# 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
與另一簽名一種不好的做法重寫?如果是的話,我該如何實施這樣的事情?
這並不壞,但如果您重寫'get'直接返回響應,則在重寫TemplateView而不是基本View時,似乎沒有任何意義。 –
在這一點上你是對的,但一些代碼丟失,使'TemplateView'有意義。然而'base.View'沒有'get()'方法,解決了這個問題。如果我的代碼是不好的做法,這可能是一個很好的解決方案。謝謝! – Dunatotatos