【问题标题】:How to access the user profile in a Django template?如何访问 Django 模板中的用户配置文件?
【发布时间】:2010-09-30 03:28:42
【问题描述】:

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

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

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

【问题讨论】:

    标签: python django django-templates


    【解决方案1】:

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

    【讨论】:

    【解决方案2】:

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

    【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

    • 这个答案具有误导性——我没有测试过{{ request.user.get_profile.whatever }},但{{ request.user.get_profile }} 可以工作并且可以用来检查当前版本中是否存在配置文件。见docs.djangoproject.com/en/dev/ref/templates/api/…。不过,有一个注意事项会在开发版本中发生变化,请参阅我链接到的上面的段落。
    • @tkolar,这里到底有什么误导?如果用户没有配置文件并且您正在调用 get_profile.something 会导致错误。
    【解决方案4】:

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

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

    谢谢:)

    【讨论】:

      【解决方案5】:

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

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

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

      {{ request.user.profile.whatever }}
      

      在你的 Django 模板中

      【讨论】:

      • @AlexStewart 你的意思是我们不再需要前面的request 键盘?
      【解决方案6】:

      工作!

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

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

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

      {{ request.user.user_profile.company_name }}
      

      【讨论】:

        猜你喜欢
        • 2012-07-25
        • 1970-01-01
        • 2011-11-15
        • 2013-05-21
        • 2012-01-18
        • 2016-04-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-24
        相关资源
        最近更新 更多