【问题标题】:Redirect after AJAX GET request in Django在 Django 中的 AJAX GET 请求后重定向
【发布时间】:2014-10-02 16:55:25
【问题描述】:

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

$.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))

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

提前致谢

【问题讨论】:

  • 如果要重定向,为什么还要使用 Ajax?为什么不直接使用标准表单并从那里返回重定向?
  • 我没有从表单发送参数。我有一个带有下拉按钮的 html 表格,有几个选择。当用户单击选项设置时,我会采用三个值 Id、年份和月份并将其传递给视图。我用一个简单的表单测试我的视图并且工作正常并且重定向到他编辑表单没有任何问题。问题是当我尝试从函数重定向时。

标签: javascript jquery python ajax django


【解决方案1】:

我从您的代码中猜想您有一个“常规”视图(不是用于处理 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

顺便说一句:

【讨论】:

  • 感谢您的快速回复,但我没有从表单中获取参数,而是从使用 django-tables2 呈现的 html 表中获取参数。在我的表格中,我有一个带有几个选项的 drop won 按钮,每个选项都必须重定向到不同的编辑表单,需要一些参数,如 id、year 和 month。如果您知道实现此功能的更好方法,请告诉我提前谢谢
  • 顺便说一句,我有像你建议的那样的表格,如果结束来自简单 html 表格的值工作正常并且浏览器将我重定向到编辑表格,我认为我的错误在于重定向到 ajax 函数中的响应
猜你喜欢
  • 2020-10-19
  • 2012-04-17
  • 1970-01-01
  • 2017-12-28
  • 1970-01-01
  • 2021-09-13
  • 2012-12-13
  • 1970-01-01
  • 2020-06-17
相关资源
最近更新 更多