在Django中的AJAX GET请求之后重定向

时间:2014-10-02 16:55:26

标签: javascript jquery python ajax django

我是Django和AJAX(javascript)的新手。 最后,我可以向django视图发送一些参数。此视图呈现编辑表单。 我发送参数和视图响应表单以及我需要的信息,但我无法重定向到从视图呈现的表单。 AJAX Fucntion:

$.ajax({
    type:"GET",
    url: "/recepcion/",
    datatype: 'json',
    data: ({i: idpro[0].innerHTML, a: ano[1].innerHTML, m: mes1[2].innerHTML }),
    success: function(data){
      window.location.href = data.redirect;
      //window.open("GET",url,true)
      }
});

django观点:

def RecepcionView(request):
    idp = request.GET.get('i')
    anio = request.GET.get('a')
    mes = request.GET.get('m')
    if request.method == 'POST':
       r = DetalleRecepcion.objects.get(id_proveedor=idp,anio=anio,mes=mes)
       form = RecepcionForm(request.POST, instance=r)
       if form.is_valid():
          form.save()
          return HttpResponseRedirect('/monitor/')
    else:
       r = DetalleRecepcion.objects.get(id_proveedor=idp,anio=anio,mes=mes)
       form = RecepcionForm(instance=r)

    return render_to_response('recepcion.html',
                              {'form':form},
                              context_instance=RequestContext(request))

在firebug控制台中,我可以看到响应,并且是包含我需要的信息的表单。 我不知道如何从响应中重定向到页面,我不确定是否必须在django视图中添加一些重定向功能或仅在ajax成功函数中添加一些重定向功能。 我对这两种语言真的很新,我很困惑,错误在哪里。

提前致谢

1 个答案:

答案 0 :(得分:0)

我猜你的代码中有一个"常规" view(不是用于处理ajax数据的视图)。可以在视图中实现重定向,您不需要ajax。 只需提交表格即可。在您的recepcion.html文件中写下类似

的内容
some html

<form method="POST" action=""> <!-- we leave the action part blank, to send the data to the same view -->
    {{ form }} <!-- the form you are passing to the template -->
    {% csrf_token %} <!-- do not forget the token or django will return an error -->
    <input type="submit" name="submit" value="Submit"/>
</form>

some html

顺便说一下: