我正在使用Django。我有一个HTML页面,在其中执行一些Javascript内容,然后以这种方式执行jQuery帖子:
$.ajax({
url: '/xenopatients/measurement/qual',
type: 'POST',
data: {'obj':data},
dataType: 'json',
contentType: "application/json; charset=utf-8", //questo ok
});
发布请求后,我的Django View 可以正确处理对此URL的调用。
我要它做的是处理数据,将用户发送到另一个页面,然后将此数据发送到新页面。
问题是我无法像在Python中一样执行重定向,就像代码忽略了重定向一样。
我的Python代码是:
@csrf_protect
@login_required#(login_url='/xenopatients/login/')
def qualMeasure(request):
name = request.user.username
print "enter"
if request.method == 'POST':
print request.POST
if "obj" in request.POST:
print 'obj received'
return render_to_response('mice/mice_status.html', RequestContext(request))
return render_to_response('measure/qual.html', {'name': name, 'form': QualMeasureForm()}, RequestContext(request))
我发现更改页面的唯一方法是通过上述代码后的Javascript:
top.location.href = "/xenopatients/measurement";
但是我不知道如何使用这种方法传递所需的数据。
HTML代码:
<form action="" method="">
<table id="dataTable" width="100%" border="1"></table><br>
<script language="javascript">
document.measureForm.id_barcode.focus();
document.measureForm.Add.disabled = false;
$('#dataTable').tablePagination({});
</script>
<input type="button" name="save" value="Save Measure Serie" onclick="table2JSON('dataTable')"/>
</form>
P.S.我也尝试过
$.post
,但结果相同。在Django中使用jQuery发出发布请求后,如何进行重定向?
最佳答案
好的,我找到了神奇的解决方案! :)
情况:
有一个由jQUery.ajax()调用的 View 方法
为了在Ajax之后进行重定向,我使用了here找到的技巧(使用文档而不是jQuery selecotor中的“body”)
但是,我还有其他操作要做。
在被调用的 View 中,调用另一个方法,如下所示:
[...]
if request.method == 'POST':
if "obj" in request.POST: #ricevuti dati da ajax
request.session['qual'] = request.POST['obj']
return HttpResponseRedirect(reverse("xenopatients.views.qualReport"))
我保存了 session 中需要的数据。我在调用的 View 中使用此数据。
调用另一种方法,这是重定向浏览器页面的关键。
实际上,在被调用方法的最后,您通常可以编写并执行:
return render_to_response('measure/qualReport.html', {'name':name, 'list_report': report, 'message':'Measures correctly saved'}, RequestContext(request))
希望这对某人有用! ;)
关于jquery - 使用jQuery进行POST请求后重定向,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6624529/