Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Django force重定向到主页_Javascript_Django_Redirect - Fatal编程技术网

Javascript Django force重定向到主页

Javascript Django force重定向到主页,javascript,django,redirect,Javascript,Django,Redirect,这是最容易用一个例子来解释的。我有一个HTML按钮,当它被点击时,它应该改变数据库中的状态字段。状态字段更改后,用户应该被重定向回主页 下面是调用Javascript函数的HTML按钮: {% for group in groups %} <button id="approve-btn" onclick="approvePendingGroup({{ group.pk }})">Approve</button> {% endfor %} Javascri

这是最容易用一个例子来解释的。我有一个HTML按钮,当它被点击时,它应该改变数据库中的状态字段。状态字段更改后,用户应该被重定向回主页

下面是调用Javascript函数的HTML按钮:

{% for group in groups %}
       <button id="approve-btn" onclick="approvePendingGroup({{ group.pk 
}})">Approve</button>
{% endfor %}
Javascript函数调用以下URL,该URL调用视图中的方法

urlpatterns = [
    url(r'^result/approve/(?P<pk>\d+)/$', views.approve_group, name 
    ='approve_group'),
]
不幸的是,这并没有导致该页面 它把我带到:页面。它只是将“home”附加到上一个URL

我怎样才能强迫这个方法直接重定向到home,而不只是将它附加到home的末尾呢

谢谢你抽出时间

执行以下操作:

from django.http import HttpResponseRedirect

@csrf_exempt
def approve_group(request, pk):
    ...
    #return reverse('home')
    return HttpResponseRedirect('/home/')
请执行以下操作:

from django.http import HttpResponseRedirect

@csrf_exempt
def approve_group(request, pk):
    ...
    #return reverse('home')
    return HttpResponseRedirect('/home/')

您应该将JavaScript函数更改为:

function approvePendingGroup(id) {
    $.ajax({
      url: "/result/approve/" + id,
      type: 'POST',
      success: function (){
          window.location.href = '/home/'
      },
      error: function(){
          alert('Something went wrong!');
      }
    });
}
在您看来,只需返回一个成功响应:

from django.http import HttpResponse

@csrf_exempt
def approve_group(request, pk):
    group = Group.objects.get(pk=pk)
    group.status = Status.approved
    group.save()
    return HttpResponse()

您应该将JavaScript函数更改为:

function approvePendingGroup(id) {
    $.ajax({
      url: "/result/approve/" + id,
      type: 'POST',
      success: function (){
          window.location.href = '/home/'
      },
      error: function(){
          alert('Something went wrong!');
      }
    });
}
在您看来,只需返回一个成功响应:

from django.http import HttpResponse

@csrf_exempt
def approve_group(request, pk):
    group = Group.objects.get(pk=pk)
    group.status = Status.approved
    group.save()
    return HttpResponse()
试试这个:

from django.shortcuts import redirect

@csrf_exempt
def approve_group(request, pk):
    ...
    # your code
    ...
    return redirect("/home/")
试试这个:

from django.shortcuts import redirect

@csrf_exempt
def approve_group(request, pk):
    ...
    # your code
    ...
    return redirect("/home/")


谢谢你的回复!但不幸的是,同样的事情仍然发生,首页只是在结尾附加了一句:谢谢你的回复!但不幸的是,同样的事情仍然发生,家只是在结尾附加:非常感谢!至少这让事情向前发展,给了我一个新问题。现在,该页面被固定在:,并且不会重定向到主页。至少它没有给出任何错误,所以这是向前迈出的一步:)@user3257736组状态是否更改为
approved
?此外,这需要
jquery
。您能试试更新后的代码吗?是的,状态已被批准!:)所以非常感谢你!我是否应该链接到HTML文件中的jquery,作为一个maybe?@user3257736如果它发生了变化,则表示您已经有了
jquery
。检查一下你的控制台,看看上面写着什么。非常感谢!至少这让事情向前发展,给了我一个新问题。现在,该页面被固定在:,并且不会重定向到主页。至少它没有给出任何错误,所以这是向前迈出的一步:)@user3257736组状态是否更改为
approved
?此外,这需要
jquery
。您能试试更新后的代码吗?是的,状态已被批准!:)所以非常感谢你!我是否应该链接到HTML文件中的jquery,作为一个maybe?@user3257736如果它发生了变化,则表示您已经有了
jquery
。检查一下你的控制台,看看上面写着什么。非常感谢!我已经试过了,但它做了同样的事情。我现在将在另一个浏览器中重试:)请重试,这在我这边工作正常。我希望它对你也有用。谢谢你!我现在试过了,但至少出现了一个新的错误。NoReverseMatch表示“home”不是有效的视图或函数模式名称。奇怪,因为项目有:url(r'^home/$,views.home,name='home')您确定您使用的视图与我建议的相同,因为这里我没有使用
return reverse('home')
,所以我认为不会发生此错误。请检查视图模块是否具有主视图。我已经检查了你的网址,它是正确的。谢谢!它真的起作用了!不幸的是,它只在Microsoft Edge中起作用:)至少它起作用了。谢谢!我已经试过了,但它做了同样的事情。我现在将在另一个浏览器中重试:)请重试,这在我这边工作正常。我希望它对你也有用。谢谢你!我现在试过了,但至少出现了一个新的错误。NoReverseMatch表示“home”不是有效的视图或函数模式名称。奇怪,因为项目有:url(r'^home/$,views.home,name='home')您确定您使用的视图与我建议的相同,因为这里我没有使用
return reverse('home')
,所以我认为不会发生此错误。请检查视图模块是否具有主视图。我已经检查了你的网址,它是正确的。谢谢!它真的起作用了!不幸的是,它只适用于Microsoft Edge:)但至少它可以工作