제 생각에는 각보기에는 하나의 목적이 있습니다. 단일 페이지에 여러 양식 요소를 사용할 수 없다는 의미는 아닙니다.
데이터 만 처리하는 일반보기를 만듭니다. 보기의 URL을 설정 한 다음 해당보기로 아약스를 호출합니다. .이 예 (단순 XHR 방법, 흐림, 변경 이벤트)
당신은뿐만 아니라 그것을 위해 자바 스크립트를 사용하고자하는 경우 쉽게 달성 할 수있다 : -
class FormElementProcess(View):
def post(self,request,*args,**kwargs):
#Do your processing and return httpresponse
당신은 더 또한 위의 클래스를 정의 할 수 있습니다 양식 클래스도 사용되는 경우 양식 데이터 처리 및 반환을 위해 formviews를 사용하십시오.
이것은 내가 추측하는 방식입니다. 홈페이지에 수십 개의 양식이 있다고 가정 해 보겠습니다. -> 검색, 로그인, 등록 등과 같은 양식. 내 IndexView를 통해 모든 것을 처리하지는 않습니다. 애플리케이션 규모가 커지면 모든 작업이 복잡해집니다.
2) 페이지가 새로 고침되면 FormMixin을 사용하는 것이 좋습니다. 내가 FormListView
from django.http import Http404
from django.utils.translation import ugettext as _
from django.views.generic.edit import FormMixin
from django.views.generic.list import ListView
class FormListView(FormMixin, ListView):
def get(self, request, *args, **kwargs):
# From ProcessFormMixin
form_class = self.get_form_class()
self.form = self.get_form(form_class)
# From BaseListView
self.object_list = self.get_queryset()
allow_empty = self.get_allow_empty()
if not allow_empty and len(self.object_list) == 0:
raise Http404(_(u"Empty list and '%(class_name)s.allow_empty' is False.")
% {'class_name': self.__class__.__name__})
context = self.get_context_data(object_list=self.object_list, form=self.form)
return self.render_to_response(context)
def post(self, request, *args, **kwargs):
return self.get(request, *args, **kwargs)
class MyListView(FormListView):
form_class = MySearchForm
model = MyModel
# ...
Detailed Code Explanation
당신은 당신의 처리를 할 수있는 더 포스트 방법을 수정하는 것을 찾을 좋은 구현이있다. 당신은 직접 폼 클래스를 사용할 수 있고, 처리 요청에 대한 매개 변수를 포함 할 수 있습니다.
목록과 양식을 쉽게 처리 할 수있는 간단한 기능 기반보기를 사용하지 않는 이유는 무엇입니까? – ettanany
@ettanany : 예, (ii)의 비 -cbvs에 의해, 나는 함수 기반의 뷰를 의미했습니다. –
알았습니다. 당신의 사건은이 하나 [ListView 및 하나의 템플릿 Django에서 CreateView] (http://stackoverflow.com/questions/19341568/listview-and-createview-in-one-template-django) 비슷합니다 생각합니다 – ettanany