扩展用户模型 - 条件URL重定向

时间:2014-09-08 14:34:23

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

我已经为我的Django项目扩展了用户模型,以便从本机管理应用程序中获得更多灵活性。我有很多不同的用户组在登录时,我想重定向到一个独特的模板。用户只会被分配到一个组。当尝试这样做是views.py文件时,我收到一个AttributeError,声明"类型对象用户没有属性' groups'。即使使用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'))

1 个答案:

答案 0 :(得分:1)

request.user获取当前用户:

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

您也可以使用exists()

  

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

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