如何访问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模板中