2010-03-10 5 views
1

동일한 페이지에 3 개의 양식이 있으며 각각 다른 양식 제출이 있습니다. 예를 들면 : 간단하게하기 위해서Django, 유효한 질문 양식

<h1>Address</h1> 
<form method="post" id="adress_form" action=/profile/update/> 
{{ form_address.as_p }} 

<p><button type="submit">Save</button></p> 
</form> 

<h1>Email Change</h1> 
<form method="post" id="email_form" action=/profile/update/> 
{{ form_email.as_p }} 

<p><button type="submit">Save</button> </p> 
</form> 

<h1>Password Change</h1> 
<form method="post" id="password_form" action=/profile/update/> 
{{ form_password.as_p }} 

<p><button type="submit">Save</button></p> 
</form> 

, 나는 아약스 포스트 스크립트가 포함되지 않았지만, 각 아약스를 통해 조회 할 것이다 제출합니다.

이제 같은 페이지에서 모두 처리하고 싶습니다. /profile/update/ 게시 할 양식을 확인해야합니다. 게시되고 유효한 경우 일부 응답을 제공하지 않으면 다른 응답을 제공하지 않습니다.

@login_required 
def profile_update_view(request): 
    if request.method == 'POST' and request.is_ajax():: 
     user = request.user 
     form_adress = AdressForm(request.POST) 
     form_email = EmailForm(request.POST) 
     form_password = PasswordChangeForm(request.POST) 

     if <CHECK IF THE SUBMIT IS AN ADDRESS FORM> 
      if form_adress.is_valid(): 
       #update and return a json response object with "adress updated successfully." for ajax 
      else: 
       answer = {'answer': "Couldn't update. Your form is not valid"} 
       return HttpResponse(simplejson.dumps(answer), mimetype="application/json") 

     if <CHECK IF THE SUBMIT IS AN EMAIL FORM> 
      if form_email.is_valid(): 
       #update and return a json response object with "email updated successfully." for ajax 
      else: 
       answer = {'answer': "Couldn't update. Your form is not valid"} 
       return HttpResponse(simplejson.dumps(answer), mimetype="application/json") 

     if <CHECK IF THE SUBMIT IS AN PASSWORD FORM> 
      if form_password.is_valid(): 
       #update and return a json response object with "password changed successfully." for ajax 
      else: 
       answer = {'answer': "Couldn't update. Your form is not valid"} 
       return HttpResponse(simplejson.dumps(answer), mimetype="application/json") 
    else: 
     return HttpResponse(u"ONLY AJAX QUERIES PLEASE", mimetype="text/plain", status=403) 

은 어떻게 든 게시 된 어떤 형태로 찾을 필요가있다. 어떻게해야합니까?

+1

마이너 노트, 당신의 "ONLY AJAX QUERIES"응답이'401'의 상태 코드를 가지고, 이것은 의미로'UNAUTHORIZED'을 의미 올바른 권한을 가진 브라우저가 암호를 요구할 수 있습니다. '403'이 유스 케이스에 더 적절할 것입니다. – MattH

+0

팁 주셔서 감사합니다, 나는 403으로 변경됩니다 :) – Hellnar

+0

중복 : http://stackoverflow.com/questions/2374224/django-working-with-multiple-forms 그것은 Ajax인지 여부는 중요하지 않습니다. –

답변

2

식별자가있는 각 양식에 숨겨진 입력을 넣은 다음보기에서 확인하십시오.

<h1>Address</h1> 
<form method="post" id="adress_form" action=/profile/update/> 
<input type="hidden" name="_address" /> 
{{ form_address.as_p }} 

<p><button type="submit">Save</button></p> 
</form> 

다음보기에서 :

if '_address' in request.POST: 
    if form_adress.is_valid(): 
     ...