如何在用户导航期间在Django中保存自定义用户模型

时间:2018-03-08 19:46:52

标签: python django session

Hy家伙,我在Django 2.0中有一个包含各种用户数据的自定义用户模型。

class User(models.Model):
    username = = models.CharField(max_length=30)
    _isLogged = False
    # ... other custom data

一旦用户在登录页面中被记录(_isLogged = True)〜,我该如何保存这个对象,以便我可以在另一个页面中验证,比如说同一个用户已经登录?

N.B。我试图将所有对象存储在会话变量中,但它不可序列化。

非常感谢。

1 个答案:

答案 0 :(得分:1)

您可以通过调用is_authenticated函数来检查用户是否已登录:

if request.user.is_authenticated():
    # something

在类似的帖子中已经很好地描述了这一点:How to check if a user is logged in (how to properly use user.is_authenticated)?

不需要任何特殊字段(如_isLogged),如果1)你正在使用默认的Django用户,2)你扩展默认用户模型或3)你正确配置你自己的模特。

有关详细信息,请参阅documentation

编辑:“我应该如何”正确“配置我自己的模型?”

以下article详细说明了这一点。简而言之:

  1. 您声明您的用户模型是AbstractUser类的子类:

    from django.contrib.auth.models import AbstractUser
    
    class User(AbstractUser):
        pass
    
  2. 通过在Django设置中设置以下值来覆盖默认用户模型:

    AUTH_USER_MODEL = 'myapp.MyUser'