代码之家  ›  专栏  ›  技术社区  ›  Swaroop C H

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

  •  83
  • Swaroop C H  · 技术社区  · 17 年前

    AUTH_PROFILE_MODULE

    我们可以使用 {{ request.user }} user.get_profile() ?

    是否每次都需要显式地将概要文件传递到模板中?

    6 回复  |  直到 10 年前
        1
  •  139
  •   AdamKG    17 年前

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

        2
  •  27
  •   Rachel    16 年前

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

        3
  •  8
  •   Mariusz Jamro    11 年前

    是,可以使用从模板访问配置文件

    然而,有一个小问题 警告 :并非所有用户都有配置文件,这在我的管理用户案例中是如此。那么直接打电话 {{ request.user.get_profile.whatever }} 在这种情况下,来自模板将导致错误。

    get_profile() 从视图中的try-except块中,将其传递给模板。

        4
  •  4
  •   MichielB    9 年前

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

    如果你有一个旧的应用程序,你应该删除它 AUTH_PROFILE_MODULE = 'myapp.profile' settings.py .

    如果你使用 models.OneToOneField(User)

    {{ request.user.profile.whatever }}
    

        5
  •  4
  •   Community Mohan Dere    5 年前

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

    用户名: {{ user.username }}

    {{ user.get_full_name }}

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

    {{ user.email }}

    {{ user.last_login }}

    示例结果如下所示:

    电邮:testuser03@auditor.com

    会议于2018年4月16日下午9:38开始。

    谢谢:)

        6
  •  1
  •   Nids Barthwal    7 年前

    在您的配置文件模型中,提供相关的\u名称

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

    然后在模板中使用。此处,公司名称是配置文件表中的字段

    {{ request.user.user_profile.company_name }}