当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何在Django模板中访问用户配置文件?》经验,为你挑选了3个好方法。

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

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

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



1> AdamKG..:

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


请参阅http://docs.djangoproject.com/en/dev/topics/templates/#variables规则非常酷.
这在Django 1.5及更高版本中已弃用,在Django 1.7及更高版本中不起作用.请参阅Sacha Rau关于如何在现代Django中执行此操作的答案.

2> Rachel..:

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


文档说(http://docs.djangoproject.com/en/dev/topics/auth/#authentication-data-in-templates),您可以简单地通过{{user}}访问用户,如您所说.
Django 1.10的链接略有不同,但想法是一样的,`django.template.context_processors.request`在模板中插入`request`,而`django.contrib.auth.context_processors.auth`插入`user`在上下文中.https://docs.djangoproject.com/en/1.10/ref/templates/api/#django-template-context-processors-request
使用{{user}}而不是{{request.user}}的真正原因是因为您没有为请求包含模板上下文处理器.[https://docs.djangoproject.com/en/dev/ref/templates/api/#django-core-context-processors-request](https://docs.djangoproject.com/en/dev/ref/templates/API /#django的核上下文处理器请求)

3> Sergey Golov..:

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

但是有一个小警告:并非所有用户都会拥有配置文件,这在我的情况下是管理员用户.因此,直接{{ request.user.get_profile.whatever }}从模板调用 会在这种情况下导致错误.

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

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有