Django 重定向

tsu*_*ino 2 python django

我试图让我网站上的人们根据他们所属的用户组访问网站的一个完全独立的部分。这是我到目前为止编写的逻辑:

if request.user:
    if request.user.groups.filter(name='A').count() >= 1:
        return HttpResponseRedirect('/pageA')
    elif request.user.groups.filter(name='B').count() >= 1:
        return HttpResponseRedirect('/pageB')
else:
    return HttpResponseRedirect('/login')
Run Code Online (Sandbox Code Playgroud)

然后网址:

url(r'', 'main.views.getIndex'),
url(r'', include('a.urls')),
url(r'', include('b.urls')),
Run Code Online (Sandbox Code Playgroud)

所以基本上,我有 A 组和 B 组 - 如果它们属于各自的用户组,用户可以相应地访问“A”页面和“B”页面。否则,他们必须登录(占位符拒绝页面)。

逻辑似乎有道理,但我不断收到“重定向过多”错误。事实上,页面实际上也到达了我想要的语句,但是在返回 HttpResponseRedirect 时,它停止工作。

非常感谢您的帮助。

Ala*_*air 5

以下模式将匹配所有网址

url(r'', 'main.views.getIndex'),
Run Code Online (Sandbox Code Playgroud)

因此,如果getIndex返回重定向,您将获得无限重定向循环。

如果您只希望 url 模式与索引 url 匹配(即/),则将其更改为:

url(r'^$', 'main.views.getIndex'),
Run Code Online (Sandbox Code Playgroud)

插入符号^匹配字符串的开头,美元$匹配字符串的结尾。因此^$只匹配空字符串''。相比之下,正则表达式r''匹配所有字符串。