python - 如何让特定用户在 Django 中看到不同的网页?

标签 python django authentication web

我想知道如何处理一个网站,一旦用户登录,就能够向每个用户显示完全不同的页面?

  • 考虑一个主登录/注册页面。
  • 一旦用户注册,根据他们的权限,他们将被重定向到适合他们用户类型的页面(同时无法访问任何其他类型的页面)。

那么这会是一个单独的用户/组权限的事情(使用 Django auth 这样做)吗?或者这是否可以使用模型来实现(即拥有每种类型的用户帐户的模型并仅在数据库中保存实例)?

这是我使用 Django(和网络开发)的第一周左右,所以我对这些东西一点也不熟悉。

最佳答案

根据权限重定向用户

在用户登录后,假设他们登陆了由 settings.LOGIN_REDIRECT_URL 设置的 URL,您可以将其更改为例如 /enter/ URL,并且您可以将 /enter/ URL 映射到下面名为 enter_view()

的 View 中
from django.shortcuts import redirect

def enter_view(request):
    if request.user.has_perm('app_label.permission_codename'):
        return redirect('/page-A')
    elif request.user.has_perm('app_label.another_permission'):
        return redirect('/page-B')
    else:
        return redirect('/page-C')

要更改您的 LOGIN_REDIRECT_URL 只需放入 settings.py

LOGIN_REDIRECT_URL = '/enter/' # or any URL you want

引用资料

https://docs.djangoproject.com/en/1.8/ref/settings/#login-redirect-url https://docs.djangoproject.com/en/1.8/ref/contrib/auth/#django.contrib.auth.models.User.has_perm https://docs.djangoproject.com/en/1.8/topics/http/shortcuts/#redirect

检查模板中的权限

此外,如果您需要自定义模板的小部分,您还可以使用 {{ perms }} 对象以类似方式检查用户权限

{% if perms.foo.can_vote %}
    <p>You can vote!</p>
{% endif %}

https://docs.djangoproject.com/en/1.8/topics/auth/default/#permissions

关于python - 如何让特定用户在 Django 中看到不同的网页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32680706/

相关文章:

authentication - 在 nginx 上使用一次性 cookie 进行非常简单的身份验证

python - mysql-connector-python 无法使用 GBK 字符串 "赵孟頫"

python - 拆分CSV文件后将数据放入列表中 - Python

python - SSLCertificateError - 尝试从 facebook 获取访问 token 时出现 "The handshake operation timed out"

python - 如何修复此 Django 错误 "Exception Type: OperationalError Exception Value: no such table?"

java - 无法使用 -Dcom.sun.management.jmxremote.authenticate=true 启动 Tomcat

python - 将 int64 转换为日期时间,格式为 %H :%M'

python - Tkinter 图形用户界面主循环 "ex ="

javascript - 如何将多个 date1 即(10/12/2016)、date2 即(23/12/2016)传递到 django 中的url?

authentication - 你将如何实现 "view site as a different user"功能?