Posts /

Django의 Class 기반 View 개념

20 May 2017

Class view의 시작

as_view()의 역할

Class view 의 내용

Class view 의 장점

Generic view 의 종류

예제

# django import 생략…
 from .forms import MyForm

 class MyFormView(View):
  form_class = MyFrom # 보여줄 폼을 정의한 forms.py의 Class
  initial = {'key' : 'val'}
  template_name = 'form_template.html' # 폼을 포함하여 처리할 템플릿 이름

  def get(self, request, *args, **kwargs):
   form = self.form_class(initial=self.initial)
   return render(request, self.template, {'form' : form}

  def post(self, request, *args, **kwargs):
   form = self.form_class(request.POST)

   if form.is_valid():
    # cleaned_data 관련 로직…
    return HttpResponseRedirect('/success/') # 유효한 데이터를 처리

   return render(request, self.template_name, {'form' : form} # 유효하지 않은 데이터처리
 from django.views.generic.edit import FormView
 from .forms import MyForm

 class MyFormView(FormView):
  form_class = MyForm
  template_name = 'form_template.html'
  success_url = '/complate/' # Class View 처리가 정상적으로 완료되었을 때 리다이렉트 시킬 URL

  # 유효한 폼 데이터로 처리할 로직. 반드시 super() 호출 필요
  def form_valid(self, form):
   # cleaned_data 처리 로직
   return super(MyFormView, self).form_valid(form)

Twitter Facebook Google+