django - Django_auth_ldap:来自 LDAP post_save 信号的用户“已创建”标志始终为假
问题描述
我正在尝试允许 LDAP 用户登录到我的 Django 应用程序。每个用户都需要一些我想存储在用户配置文件模型中的附加属性。
我已经实现了“post_save”信号以在初始登录时创建用户配置文件,但是,我发现对于 LDAP 用户,即使他们以前从未登录过,创建的标志始终为 False。
唯一的一次created = True
是我使用 manage.py 创建一个新的超级用户
我的 post_save 看起来像这样:
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
print(sender)
print("USERPROFILE1: {0} with id {1}".format(instance, instance.pk))
print("CREATION: {0}".format(created))
if created:
print("USERPROFILE3")
UserProfile.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
print("USERPROFILE2")
instance.userprofile.save()
首次登录时,永远不会创建配置文件,因为“已创建”始终为“假”
<class 'django.contrib.auth.models.User'>
USERPROFILE1: lbird with id 1
CREATION: False
User has no userprofile. while authenticating
[...]
django.contrib.auth.models.User.userprofile.RelatedObjectDoesNotExist: User has no userprofile.
解决方案
推荐阅读
- javascript - 推送和弹出反应状态
- artificial-intelligence - 什么是遗传漂变,它如何影响 EA?
- python - 如何根据一个条件为真的列选择行
- python - 如何用 n 个整数在单行中填充列表?
- flutter - 错误状态:Stream 已被监听错误
- amazon-web-services - 为什么这会给我一个错误“必须是有效的 ipv4 cidr”?
- r - 如何使用 highcharter 在 r 中创建工具提示图表?
- html - 响应式下拉菜单不会重定向到外部站点
- php - 如何添加链接以编辑和删除使用php制定的表格中的每一行
- python - python urwidtrees 删除 SimpleTree 节点会引发异常