Jquery 重定向不工作django

Jquery 重定向不工作django,jquery,python,django,django-views,django-urls,Jquery,Python,Django,Django Views,Django Urls,我对Django URL重定向有问题。该守则的结构如下: reactor视图显示一个包含元素列表的HTML页面。单击其中一个视图时,会向视图发出ajax请求 ajax请求正在调用另一个包含必要信息的视图 MeasurementTreactor被调用并显示关于一个反应堆的详细信息 所有函数都已正确调用,GET请求已完成,但页面不会在浏览器中重定向 url.py urlpatterns = [ url(r'^reactors/$', views.reactors, name = 'r

我对Django URL重定向有问题。该守则的结构如下:

  • reactor视图显示一个包含元素列表的HTML页面。单击其中一个视图时,会向视图发出ajax请求
  • ajax请求正在调用另一个包含必要信息的视图
  • MeasurementTreactor被调用并显示关于一个反应堆的详细信息
所有函数都已正确调用,GET请求已完成,但页面不会在浏览器中重定向

url.py

urlpatterns = [
     url(r'^reactors/$', views.reactors, name = 'reactors'),
     url(r'^measurements/reactor/$', views.measurementReactor, name='measureReact'),
]
views.py

@login_required
def reactor(request):
if request.method == "POST" and request.is_ajax():
    if request.POST.get('type') == "measurement" :
        return redirect('/measurements/reactor/?ref='+request.POST.get('id'))

@login_required
def measurementReactor(request):
    reactobj = reactor.objects.get(id=request.GET['ref'])
    query = measurements.objects.filter(id_reactor=reactobj.id)

    return render(request, "measureReact.html",{"query":query})
reactor.js

var table1 = $('#datatable').DataTable();

$('#datatable tbody').on('click', 'tr>th:not(.controls.mdl-data-table__cell--non-numeric)', function () {
var data = $(this).parent().find("[name=pk]").text();
$.ajax({
  type : "POST",
  data : {'csrfmiddlewaretoken' : csrftoken, 'id':data, 'type':"measurement"},
 });
});
[编辑]谢谢你的回答,我做到了,而且效果很好

#views.py
import json
@login_required
def reactors(request):
    if request.POST.get('type') == "measurement" :
        data = json.dumps({'url':'/measurements/reactor/?ref='+request.POST.get('id')})
        return HttpResponse(data)

#reactor.js
$.ajax({
      type : "POST",
      data : {'csrfmiddlewaretoken' : csrftoken, 'id':data, 'type':"measurement"},
      dataType: 'json',
      success: function(data){
        window.location.href = data["url"];
      }
     });

在ajax调用中,您将获得json格式的数据,它不会更改url,最好使用HttpResponse从T返回json上的url,并从javascript代码重定向该url

@login_required
def reactor(request):
if request.method == "POST" and request.is_ajax():
    import josn
    if request.POST.get('type') == "measurement" :
        data = josn.dump({'url':/measurements/reactor/?ref='+request.POST.get('id')})
        return HttpResponse(data)
在ajax调用成功方法中,捕获响应并使用$window重定向,正如aman kumar建议的那样,reactor视图应将
url
返回reactor.js,然后使用它重定向到所需页面:

reactor.js
var table1 = $('#datatable').DataTable();

$('#datatable tbody').on('click', 'tr>th:not(.controls.mdl-data-table__cell--non-numeric)', function () {
var data = $(this).parent().find("[name=pk]").text();
$.ajax({
  type : "POST",
  data : {'csrfmiddlewaretoken' : csrftoken, 'id':data, 'type':"measurement"},
  success: function(data){
    window.location.href = data.url;
  }
 });
});