我在这里发现了很多关于同一主题的问题,但它们都有一个共同点,即Django-allauth。但我的项目使用djoser。我希望用户只有在第一次登录时才能在他们的个人资料中添加一些额外的信息。我不能使用Django-allauth的比较。
user.last_login == user.date_joined
字符串当我登录时,最后一次登录日期发生了变化,我希望用户登录,以便他们可以进行更改。我正在使用Django 1.7和djoser进行登录和身份验证。
wydwbb8l1#
您可以简单地添加一个新的BooleanField(例如,命名为is_previously_logged_in)到您的配置文件模型中,并在每次登录时检查它是否仍然是False。然后您可以将其设置为True,这样就不会向用户显示配置文件信息两次。
BooleanField
is_previously_logged_in
False
True
h43kikqp2#
这也可以通过检查内置的user.last_login字段来实现。它将是None,直到用户第一次登录。我可以在account adapter的login方法中进行检查:
user.last_login
None
login
class CustomAccountAdapter(DefaultAccountAdapter): def login(self, request, user): is_first_login = user.last_login is None super().login(request, user) if is_first_login: # First login, do something
字符串如果你还没有使用自定义适配器,你需要在Django设置文件中添加以下内容:
ACCOUNT_ADAPTER = 'my.package.CustomAccountAdapter'
型
2条答案
按热度按时间wydwbb8l1#
您可以简单地添加一个新的
BooleanField
(例如,命名为is_previously_logged_in
)到您的配置文件模型中,并在每次登录时检查它是否仍然是False
。然后您可以将其设置为True
,这样就不会向用户显示配置文件信息两次。h43kikqp2#
这也可以通过检查内置的
user.last_login
字段来实现。它将是None
,直到用户第一次登录。我可以在account adapter的
login
方法中进行检查:字符串
如果你还没有使用自定义适配器,你需要在Django设置文件中添加以下内容:
型