Django AllAuth - 登录/注册后保存 session 数据

标签 django python-3.x django-allauth django-signals

如何在用户使用 Django-AllAuth 登录后立即实现一些逻辑?在我开始实现 AllAuth 之前,我的登录 View 在用户登录后包含了一些额外的逻辑

...
login(request, user)

        # Check if the user has a league in session
        if 'league_id' in self.request.session:

            # Save the league to this user's user instance
            league_id = self.request.session.pop('league_id') # pop removes it from the session
            league = League.objects.get(pk = league_id)
            league.user = user
            league.save()

(此处的目的是允许用户在登录之前创建一个“联赛”实例,并在登录后,联赛通过存储在 session 中的 league_id 与其用户实例关联。)

我尝试扩展 allauth 中提供的 form_valid() 方法 LoginView 但看起来好像 form_valid() 方法从未被调用。

有什么想法可以解决这个问题吗?

最佳答案

您可以使用signals .

用户登录后会立即触发一个信号:allauth.account.signals.user_logged_in

关于Django AllAuth - 登录/注册后保存 session 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28144789/

相关文章:

python - RuntimeError : Model class myapp. models.class 未声明显式 app_label 并且不在 INSTALLED_APPS 中的应用程序中

python - 删除列表中重复项之间的所有实例,Python

python - 有没有办法快速从列表中选择多个项目?

python - 具有多个域的 django-allauth

python - 在表单集中设置 auto_id 并且不要在首次显示时禁用错误

python - 在模板标签中使用 django 权限

python - 简化 Django 模型 save() 表达式

python - 从列表中的元组中删除逗号

python - django-allauth 返回错误 "Reverse ... with arguments ' ( )' and keyword arguments ' { }' not found"

django allauth facebook本地开发