Django 基础(16)-Django中通过request.user获取user信息

Django中通过request.user获取user信息

自定义账号模型类

# -*- coding: utf-8 -*-
from django.db import models
from django.utils import timezone
from django.contrib.auth.hashers import make_password
from django.contrib.auth.models import UserManager,AbstractBaseUser
from system.role.models import Role

class AccountManager(UserManager):
    pass

class Account(AbstractBaseUser):
    id = models.AutoField(primary_key=True)
    username = models.CharField(max_length=150,unique=True)
    role = models.ForeignKey(Role, on_delete=models.CASCADE)
    contact = models.CharField(max_length=50)
    email = models.CharField(max_length=100)
    tel = models.CharField(max_length=20,blank=True,null=True)
    is_active = models.BooleanField(default=False)
    is_superuser = models.BooleanField(default=False)
    is_staff = models.BooleanField(default=True)
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=100)
    date_joined = models.DateTimeField()
    password_mtime = models.DateTimeField()
    last_login = models.DateTimeField()
    is_first_time_login = models.BooleanField(default=True)
    objects = AccountManager()
    
    USERNAME_FIELD = 'username'
    REQUIRED_FIELDS = ['email']
    
    def set_password(self, raw_password):
        self.password = make_password(raw_password)
        self.password_mtime = timezone.now()
    
    class Meta:
        db_table = 't_account'
        ordering = ('-id',)
    
    def __str__(self):
        return self.username

如下,我们就可以如下在view中,用 acctount对象.访问具体的属性:

    def create(self, request, *args, **kwargs):
        acct=self.request.user
        logger.info('acct.role.type:%s' % acct.role.type)
        logger.info('acct.is_superuser:%s' % acct.is_superuser)
        logger.info('acct:%s' % acct)
        logger.info('acct.username:%s' % acct.username)

request.user是一个对象,用户没有登陆的时候使用request.user.username会返回一个AnonymousUser,这是一个匿名用户,可是我在数据库中并没有这个用户。

总结:request.user 中的属性来自我们 自定义的账号模型中。

参考

django中request.user的由来
参考URL: https://zhuanlan.zhihu.com/p/415424659
request.user哪里来的?
参考URL: https://www.cnblogs.com/wuchenggong/p/9675017.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西京刀客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值