如何在Django模板中访问用户配置文件?

时间:2009-01-07 21:19:14

标签: python django django-templates

我正在使用AUTH_PROFILE_MODULE存储一些额外的每用户信息。

我们可以使用{{ request.user }}访问Django模板中的用户,但是我们如何访问配置文件中的字段,因为只能通过函数user.get_profile()访问配置文件?

是否真的需要每次都将配置文件明确传递到模板中?

6 个答案:

答案 0 :(得分:131)

使用{{ request.user.get_profile.whatever }}。 Django的模板语言自动调用可调用的东西 - 在本例中是.get_profile()方法。

答案 1 :(得分:25)

不确定为什么它对我来说有所不同,但我需要使用{{user}}而不是{{request.user}}。

答案 2 :(得分:8)

是的,可以使用模板访问配置文件    request.user.get_profile

然而,有一个小的警告:并非所有用户都会有个人资料,这在我的情况下是管理员用户。所以直接打电话    在这种情况下,模板中的{{ request.user.get_profile.whatever }}会导致错误。

如果您确定所有用户都有配置文件,则可以安全地从模板中调用,否则请在视图中的try-except块中调用get_profile()并将其传递给模板。

答案 3 :(得分:4)

如果您使用的是Django> 1.5您无法再使用get_profile

如果您有遗留应用,则应从AUTH_PROFILE_MODULE = 'myapp.profile'中删除settings.py

如果您在Profile类中使用models.OneToOneField(User),则只需使用

即可
{{ request.user.profile.whatever }}
你的Django模板中的

答案 4 :(得分:2)

如果它对任何人都有帮助,我在模板中使用了以下内容:

用户名:{{ 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开始。

谢谢:)

答案 5 :(得分:0)

工作中!

在您的个人资料模型中提供相关名称

user = models.OneToOneField(AUTH_USER_MODEL, related_name="user_profile", on_delete=models.CASCADE)

然后在模板中使用。这里company_name是配置文件表中的字段

{{ request.user.user_profile.company_name }}
相关问题