Python Django视图,在一个视图中有两个重定向
是否可以在同一django视图中有2个redirect()。所以当like按钮在主页中时,我希望它重定向回主页,如果like按钮在detail页面中,我希望重定向回detail页面 例如:Python Django视图,在一个视图中有两个重定向,python,django,view,Python,Django,View,是否可以在同一django视图中有2个redirect()。所以当like按钮在主页中时,我希望它重定向回主页,如果like按钮在detail页面中,我希望重定向回detail页面 例如: def LikeView(request, slug): context = {} post = get_object_or_404(BlogPost, slug=slug) post.likes.add(request.user) if in homepage:
def LikeView(request, slug):
context = {}
post = get_object_or_404(BlogPost, slug=slug)
post.likes.add(request.user)
if in homepage:
return redirect('HomeFeed:detail', slug=slug)
else:
return redirect('HomeFeed:main')
在
next
URL参数中传递重定向URL。像这样:
或者简单地说:
始终将当前URL作为重定向URL传递
然后在您的LikeView
中:
def LikeView(请求,段塞):
...
next=request.GET.GET(“next”,无)
如果下一个和下一个!='':
返回HttpResponseRedirect(重定向到=下一步)
#然后,在URL中未传递“next”的情况下,使用默认重定向URL(例如Home):
返回HttpResponseRedirect(重定向到=“/home”)
正如Django文档中提到的,这是不安全的(对于大多数应用程序),因此您必须检查URL是否安全,然后重定向到next
,否则只需返回默认的安全应用程序内URL
阅读
url\u是否允许\u host\u和\u scheme
功能检查url在上是否安全是的,为什么不可能?但是主页中的if
是一个无效条件。@WillemVanOnsem您能告诉我怎么做吗?因为我以前没有这样做过,我搜索过,但找不到任何结果。非常感谢你你到底想检查什么?好吧,这是一个博客帖子应用程序,可以从主页和他们自己的私人帖子页面看到帖子,每个帖子都有自己的“喜欢”按钮,所以当我按下主页上的“喜欢”按钮时,我想将其重定向到主页,当我在他们自己的私人页面中按它时,我希望它被重定向到他们自己的私人页面page@Mojtaba哦,谢谢你的意见。你没有尝试重定向两次吗?我不确定你是否也遇到了这个问题。我被否决了,我想这可能是一个愚蠢的问题哇,这看起来很复杂,谢谢,我会尝试一下!!你认为你也能解决这个问题吗
def delete_blog_view(request,slug):
context = {}
user = request.user
#YOU WANT to check if user is authenticated. if not, you need to authenticate! redirect you to that page
if not user.is_authenticated:
return redirect("must_authenticate")
account = Account.objects.get(pk=user_id)
blog_post = get_object_or_404(BlogPost, slug=slug)
blog_post.delete()
return redirect(request.META.get('HTTP_REFERER', 'account:view', kwargs={'user_id': account.pk }))