【问题标题】:Extended User Model - Conditional URL Redirect扩展用户模型 - 条件 URL 重定向
【发布时间】:2014-09-08 14:34:22
【问题描述】:

我已经为我的 Django 项目扩展了用户模型,以便从本机管理应用程序中获得更多的灵活性。我有许多不同的用户组在登录时,我想重定向到一个独特的模板。用户只会被分配到一个组。尝试执行此操作时是 views.py 文件,我收到一个 AttributeError 说明“类型对象用户没有属性‘组’。即使使用 User.group.filter,也会发生‘过滤器’的属性错误。在模板中,我可以通过“{{user.groups.all.0}}”正确检索用户的组信息。

有关用户模型和views.py,请参见下面的代码。

扩展用户模型:

class User(AbstractBaseUser, PermissionsMixin):

    username = models.CharField(_('username'), max_length=30, unique=True,
    validators=[validators.RegexValidator(re.compile('^[\w.@+-]+$'), _('Enter a valid username.'),
    _('invalid'))])
   first_name = models.CharField(_('first name'), max_length=50)
   last_name = models.CharField(_('last name'), max_length=50)
   email = models.EmailField(_('email address'), max_length=255, unique=True,
   is_staff = models.BooleanField(_('staff status'), default=False,
   is_active = models.BooleanField(_('active'), default=False,
   date_joined = models.DateTimeField(_('date joined'), default=timezone.now)

   USERNAME_FIELD = 'username'
   #added all required fields except email
   REQUIRED_FIELDS = ['first_name', 'last_name', 'email']
   objects = UserManager()

Views.py:

from django.shortcuts import render, render_to_response, RequestContext
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
from django.contrib.auth.decorators import login_required


from User_Profile.models import User

@login_required
def home(request):
    if User.groups.filter(name__in["Group1"]):
        return HttpResponseRedirect(reverse('laucnh'))

【问题讨论】:

  • 确实,User 模型类 本身没有任何组。只有 User 的实例(例如当前用户)具有组。

标签: python django django-models django-views django-urls


【解决方案1】:

request.user获取当前用户:

request.user.groups.filter(name__in["Group1"])

您也可以使用exists():

如果 QuerySet 包含任何结果,则返回 True,否则返回 False。 这试图以最简单和最快的方式执行查询 可能,但它确实执行与普通查询几乎相同的查询 QuerySet 查询。

if request.user.groups.filter(name__in["Group1"]).exists():

【讨论】:

  • 是的,做到了。输入 request.user 后,工作完美。谢谢。
猜你喜欢
  • 1970-01-01
  • 2011-11-14
  • 2012-08-17
  • 2014-08-17
  • 2020-04-14
  • 2021-09-09
  • 2010-10-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多