如何访问Django模板中的用户configuration文件?

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

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

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

使用{{ request.user.get_profile.whatever }} 。 Django的模板语言会自动调用可调用的东西 – 在这种情况下是.get_profile()方法。

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

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

然而,有一个小警告 :并不是所有的用户都会有configuration文件,这在我的情况下是pipe理员用户。 所以直接从模板中调用{{ request.user.get_profile.whatever }}会在这种情况下导致错误。

如果您确定所有的用户总是拥有configuration文件,那么从模板调用是安全的,否则从视图中的try-except块中调用get_profile()并将其传递给模板。

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

如果您有旧版应用,则应该从settings.py移除AUTH_PROFILE_MODULE = 'myapp.profile'

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

 {{ request.user.profile.whatever }} 

在你的Django模板中