ビューで:
return render_to_response("main.html", RequestContext(request, {'form':form, "result":result}))
テンプレートには、このjquery関数があります:
$('#submitButton').click(function(e) {
e.preventDefault();
var dataPosted = $("#mainSubmit").serialize();
$.ajax({
type: "POST",
data: dataPosted,
url: 'main/',
success: function(data) {
$("#mainDiv").html(data);
$(".response").html({{ result }});
$(".response").show();
}
});
});
});
<div id="mainDiv" class="part">
<form id="mainSubmit" action="main/" method="POST" name="submitForm">
{% csrf_token %}
{{ form.non_field_errors }}
{{ form.as_p }}
<input type="submit" value="Submit" id="submitButton"/>
<div class="response" style="display: none;"></div>
</form>
</div>
しかし、このように応答divにデータを割り当てることはできないようです(データが定義されていないようです)。したがって、テンプレートにデータを送信する方法がわかりません。ビューで使用するHttpresponse(result)
と、フォームを更新できず、ビューから送信した応答 div データに表示できるのは私だけです。それで、道は何ですか?
編集:これは私の見解です。以前は if form.is_valid(): の条件に else を入れていませんでしたが、ここではこれを使用します。何が最善の方法かわかりません。
def mainFunc(request):
if request.is_ajax():
if request.method == 'POST':
form = mainForm(request.POST)
if form.is_valid():
// process the form
result = "successful"
to_json = {'form':form, 'result':result}
return HttpResponse(json.dumps(to_json), mimetype='application/json')
else:
result = ""
to_json = {'form':form, 'result':result}
return HttpResponse(json.dumps(to_json), mimetype='application/json')
else:
form = mainForm()
return render_to_response('main.html', RequestContext(request, {'form':form}))
else:
return render_to_response("ajax.html", {}, context_instance=RequestContext(request))