Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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
Python Django视图,在一个视图中有两个重定向_Python_Django_View - Fatal编程技术网

Python Django视图,在一个视图中有两个重定向

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:

是否可以在同一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:
        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 }))