python - Django 重定向

标签 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')

然后是网址:

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/

相关文章:

python selenium send_key() 不起作用

python - HTML 网页抓取一个值

Python-如何从对象列表中获取日期字段具有最新值的对象?

django - 从超过 max_retries 失败的任务中恢复

python - 如何使用 Django 提供 Flutter Web 应用程序?

python - 如何使用Gabor滤波器从图像中提取特征?

python - flask 首次运行 : Do not use the development server in a production environment

python - export_png 所有图层的 Bokeh

django - 如何在 Django 中重置管理员密码

django - 我应该为大型文本文件选择哪个数据库