2017-04-12 3 views
0

TemplateView에서 상속받은 JobView으로 장고 응용 프로그램을 작성했습니다. get 메소드에는 URL에 추가 인수 (job_id)가 필요합니다. 기본적으로, 내 urls.py은 다음과 같습니다Django - 다른 서명이있는 TemplateView.get을 재정의합니까?

# 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

# 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의 정의가 포함되어 있습니다.

TemplateView.get 방법을 맞추려면 JobView.get의 정의는 다음과 같아야합니다
class JobView(TemplateView): 
    def get(self, request): 
     # Some stuff 

는 다른 서명 나쁜 연습 무시되어 있습니까? 그렇다면 어떻게 구현해야합니까?

+1

나쁘지는 않지만 직접 응답을 반환하기 위해 'get'을 재정의하면 기본보기가 아닌 TemplateView를 무시할 때 전혀 문제가되지 않는 것 같습니다. –

+0

이 시점에서 옳은 점이 있지만 일부 코드가 누락되어 'TemplateView'가 의미가 있습니다. 그러나'base.View'는'get()'메서드를 가지고 있지 않으므로이 문제를 제거합니다. 내 코드가 나쁜 습관이라면 좋은 해결책이 될 수 있습니다. 감사! – Dunatotatos

답변

1

서명이 동일해야하지만 수퍼 클래스 메서드를 호출 할 때 사용자 지정 args 및 kwargs를 추가하면 추가 할 수 있습니다. View (서브 클래스)의 실제 메소드 서명은 get (self, request, * args, ** kwargs)입니다.