문제

같은 페이지에 3 개의 양식이 있으며 각각 다른 양식 제출이 있습니다. 와 같은:

<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>

단순성을 위해 Ajax 포스트 스크립트를 포함하지 않았지만 각 제출은 Ajax를 통해 쿼리됩니다.

이제 같은 페이지에서 처리하고 싶습니다. /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)

어떻게 든 어떤 형태가 게시되었는지 알아야합니다. 어떻게 할 수 있습니까?

도움이 되었습니까?

해결책

식별자가있는 각 양식에 숨겨진 입력을 넣을 수 없었을 때, 당신의 견해에서 확인할 수 없습니까?

<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():
        ...
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top