장고의 클래스 기반 뷰를 실험 해본 결과 request
의 특정 정보를 처리하는 간단한 클래스 기반 뷰를 작성하여 "처리기"메소드에서 처리 된 정보를 사용할 수 있도록했습니다.클래스 기반보기를 사용하여 정보를 처리 하시겠습니까?
필자는 문서가 무엇을 말하는지 완전히 이해하지 못했고 이것이 믹스 인, 일반적인보기 또는 다른 것이어야하는지 확신 할 수 없습니다. 내가 만드는 생각하고이 같은 클래스 :
class MyViewDoesRealWork(MyNewGenericView):
def get(self, request, some_info):
return render(request, 'some_template.html',
{'info':self.useful_information1})
def post(self, request, some_info):
# Store some information, maybe using get_extra_info
return render(request, 'some_template.html',
{'info':self.useful_information1})
위의 코드 갈 올바른 방법입니다 :이 사람이 같은 뷰를 작성할 수 있습니다
class MyNewGenericView(View):
redirect_on_error = 'home'
error_message = 'There was an error doing XYZ'
def dispatch(self, request, *args, **kwargs):
try:
self.process_information(request)
# self.process_information2(request)
# self.process_information3(request)
# etc...
except ValueError:
messages.error(request, self.error_message)
return redirect(self.redirect_on_error)
return super(MyNewGenericView, self).dispatch(request, *args, **kwargs)
def process_information(self, request):
# Use get/post information and process it using
# different models, APIs, etc.
self.useful_information1 = 'abc'
self.useful_information2 = 'xyz'
def get_extra_info(self):
# Get some extra information on something
return {'foo':'bar'}
? 이 일을 더 간단하게/더 나은 방법이 있습니까? 이로 인해 위의 기능이 다른 일반보기 (예 : 기본 제공 일반보기)에서 사용되는 것을 방지 할 수 있습니까?
더 나은 방법이 있다고 생각되면 답변을 게시하십시오. – Umang