Javascript Django force重定向到主页
这是最容易用一个例子来解释的。我有一个HTML按钮,当它被点击时,它应该改变数据库中的状态字段。状态字段更改后,用户应该被重定向回主页 下面是调用Javascript函数的HTML按钮: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
{% 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:)但至少它可以工作