Django 1.5 및 Dojo 1.8을 사용하고 있습니다. Dojo가 단추를 클릭 할 때 장고보기로 양식을 제출하도록하려고합니다. 나는 Submit
버튼을 클릭하면Dojo를 사용하여 양식을 제출하는 데 문제가 있습니다.
<div id="report_body">
<form data-dojo-type="dijit/form/Form" id="parameters_form" data-dojo-id="parameters_form">
{% csrf_token %}
<table>
{{ form.as_table }}
</table>
<p><button id="submit_parameters" dojoType="dijit.form.Button" type="submit">Submit</button></p>
</form>
</div>
<script type="dojo/on" data-dojo-event="submit" data-dojo-args="e">
e.preventDefault();
require(["dojo/dom", "dojo/request", "dojo/dom-form"], function(dom, request, domForm){
on(dom.byId("submit_parameters"), "click", function() {
console.log("Dojo Post");
request.xhr("/report_parameters/report_id/report_url/", {
method: "post",
handleAs: "json",
data: domForm.toJson("parameters_form"),
}).then(
function(response){
alert(response);
dom.byId("report_body").innerHTML = "Report!";
},
function(error){
dom.byId("report_body").innerHTML = "<div class=\"error\">"+error+"<div>";
}
);
});
});
</script>
, 나는 데이터를 전달하는 URL에 POST
요청을 보낼 : 여기
def report(request, report_id, report_url=None, template='report_parameters.html'):
if request.method == 'POST':
form = ReportParametersForm(request.POST)
if form.is_valid():
report_params = form.save()
html = "Success!"
return HttpResponse(html)
else:
form = ReportParametersForm()
return render(request,template, {
'form': form,
'report_url': report_url,
'report_id': report_id,
})
는 HTML 페이지입니다 : 여기
내 장고이다 나는 나의 형태로있다. 그러나 지금 바로
Submit
을 클릭하면 다음과 같은 URL로 페이지가 다시로드됩니다.
/?csrfmiddlewaretoken=Y9gaNMFRWZNXMbJ2L3Ev7A5iKPGTuWeF¶m_1=0¶m2=0/report_parameters/report_id/report_url/
. 내 콘솔에 나타나야하는
Dojo Post
이 표시되지 않습니다. 양식을 제출하려면 어떻게해야합니까?
감사합니다. 지금 POST가 작동 중입니다. 그러나 콘솔을 볼 때이 오류가 발생합니다 : 'POST http : ///report_parameters/report_id/report_url/403 (FORBIDDEN)'. 그 원인은 무엇입니까? –
http://en.wikipedia.org/wiki/HTTP_403 - 권한을 확인하십시오. –
좋아, 알아 냈어. 버그는'var data = domForm.toJava ("parameters_form");''var 데이터 = domForm.toObject ("parameters_form");'이 될 필요가 있었고'handleAs : "json" ,'라인. –