我试图让我网站上的人们根据他们所属的用户组访问网站的完全独立的部分。这是我到目前为止编写的逻辑:
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')
然后是网址:
url(r'', 'main.views.getIndex'),
url(r'', include('a.urls')),
url(r'', include('b.urls')),
所以基本上,我有 A 组和 B 组 - 如果用户属于各自的用户组,则可以相应地访问“A”页面和“B”页面。否则,他们必须登录(占位符拒绝页面)。
逻辑似乎是有道理的,但我不断收到“太多重定向”错误。事实上,页面实际上也到达了我想要的语句,但是在返回 HttpResponseRedirect 后,它就停止工作了。
非常感谢您的帮助。
最佳答案
以下模式将匹配所有网址
url(r'', 'main.views.getIndex'),
因此,如果 getIndex
返回重定向,您将获得无限重定向循环。
如果您只想让 url 模式与索引 url 匹配(即 /
),则将其更改为:
url(r'^$', 'main.views.getIndex'),
脱字号 ^
匹配字符串的开头,美元 $
匹配字符串的结尾。因此 ^$
仅匹配空字符串 ''
。相比之下,正则表达式 r''
匹配所有字符串。
关于python - Django 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14543096/