94

我正在使用AUTH_PROFILE_MODULE.

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

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

4

6 回答 6

140

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

于 2009-01-07T21:24:09.583 回答
27

不知道为什么它对我不同,但我需要使用 {{user}} 而不是 {{request.user}}。

于 2010-01-22T17:00:28.043 回答
8

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

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

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

于 2009-01-07T21:41:55.757 回答
5

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

用户名:{{ user.username }}

用户全名:{{ user.get_full_name }}

用户组:{{ user.groups.all.0 }}

电子邮件:{{ user.email }}

会议开始于:{{ user.last_login }}

示例结果如下:

用户:审计员ezio

用户组:auditGroup

用户名:testUser03

邮箱:testuser03@auditor.com

会议于 2018 年 4 月 16 日晚上 9:38 开始

谢谢 :)

于 2018-04-16T17:34:26.583 回答
4

如果您使用 Django > 1.5,则不能再使用get_profile.

如果您有旧版应用程序,则应AUTH_PROFILE_MODULE = 'myapp.profile'settings.py.

如果您models.OneToOneField(User)在 Profile 类中使用,您可以简单地使用

{{ request.user.profile.whatever }}

在你的 Django 模板中

于 2016-03-26T22:33:24.190 回答
1

在职的 !

在您的个人资料模型中提供related_name

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

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

{{ request.user.user_profile.company_name }}
于 2018-08-28T10:10:59.080 回答