如何在Django模板中访问用户配置文件?
-
05-07-2019 - |
题
我正在使用 <代码> AUTH_PROFILE_MODULE 代码> 。
我们可以使用 {{request.user}}
访问Django模板中的用户,但是我们如何访问配置文件中的字段,因为配置文件只能通过函数用户访问。 get_profile()
?
是否真的需要每次都将配置文件明确传递到模板中?
解决方案
使用 {{request.user.get_profile.whatever}}
。 Django的模板语言自动调用可调用的东西 - 在本例中是 .get_profile()
方法。
其他提示
不确定为什么它对我来说有所不同,但我需要使用{{user}}而不是{{request.user}}。
是的,可以使用模板访问配置文件 request.user.get_profile
然而,有一个小的警告:并非所有用户都会拥有个人资料,这在我的情况下是管理员用户。所以直接打电话
在这种情况下,模板中的 {{request.user.get_profile.whatever}}
会导致错误。
如果您确定所有用户始终都有配置文件,则可以安全地从模板调用,否则请从视图中的try-except块中调用 get_profile()
并将其传递给模板。 / p>
如果您使用的是Django&gt; 1.5你不能再使用 get_profile
。
如果您有遗留应用,则应从 settings.py
中删除 AUTH_PROFILE_MODULE ='myapp.profile'
。
如果在Profile类中使用 models.OneToOneField(User)
,则只需使用
{{ request.user.profile.whatever }}
你的Django模板中的
如果它对任何人都有帮助,我在模板中使用了以下内容:
用户名: {{user.username}}
用户全名: {{user.get_full_name}}
用户组: {{user.groups.all.0}}
电子邮件: {{user.email}}
会话开始于: {{user.last_login}}
示例结果如下:
用户:auditor ezio
用户组:auditGroup
用户名:testUser03
电子邮件:testuser03@auditor.com
会议于2018年4月16日,下午9:38开始。
谢谢:)
工作!
在您的个人资料模型中提供related_name
user = models.OneToOneField(AUTH_USER_MODEL, related_name="user_profile", on_delete=models.CASCADE)
然后在模板中使用。这里company_name是配置文件表中的字段
{{ request.user.user_profile.company_name }}