我正在使用django表单来更新一些细节。一旦点击保存更改,就会执行ajax调用,执行视图,发送ajax响应,在页面中执行的成功代码再次重新加载。 n在重新加载时,如果form不再有效,则执行from.is_valid()的else部分。Django表单提交 - 避免页面重定向
if form.is_valid:
#do something
return HttpResponse(simplejson.dumps(response), mimetype='application/json')
else:
#do something
return render_to_response('ts.html', {'form': form}, context_instance = RequestContext(request))
我想避免页面重新加载成功的表单提交和绝对路径返回ajax响应。如何实现这一目标?
我改变了我的代码,这里是视图,模板和jQuery。
if request.POST:
if form.valid():
if credentials.correct():
resp = {'success': True}
return HttpResponse(simplejson.dumps(resp), mimetype='application/json')
else:
resp = {'success': False}
return HttpResponse(simplejson.dumps(resp), mimetype='application/json')
else:
print "error in form"
return render(request, 'manage_accounts.html', {'creds': creds, 'form': form})
else:
form = SomeForm()
return render(request, 'manage_accounts.html', {'creds': creds, 'form': form})
模板
<form action="/accounts/" method="POST" id="bitlychangeform">
<div id="ajaxwrapper">
{% csrf_token %}
{{ form.non_field_errors }}
<!--{% include "Change_bitly_form.html" %}-->
{{ form.as_p }}
<div class="clearfix">
<label></label>
<div class="input" style="float:right">
<input type="submit" id="save" value="Save Changes" class="btn btn-primary "/>
</div>
</div>
</div>
</form>
的Jquery:
$(function(){
var form = $('#bitlychangeform');
form.submit(function(e) {
jQuery("#save").attr('disabled', true)
jQuery("#ajaxwrapper").load(
form.attr('action') + ' #ajaxwrapper',
form.serializeArray(),
function(data) {
jQuery("#save").attr('disabled', false)
alert(data);
});
return false;
e.preventDefault();
});
});
的页面重载不会当我使用Django的形式{{form.as_p}}但是当我使用一个“发生表单的自定义模板为带**的密码字段字段,并且只有在单击编辑按钮后才可编辑“,form.valid()返回false。
我需要django表单作为我自定义的表单模板,就像我期望的那样。任何人都可以指导我。
你没有在django中重定向。我会看看你的形式'onSubmit'方法是'返回False',以便它不重定向。也许有更多的“djangonic”方式来做到这一点。 – dm03514
你能展示模板,AJAX和全视图代码吗? – super9