将用户属性作为Django模板中的变量传递

时间:2015-01-22 22:22:59

标签: python django

在我的索引页面上,我有Django官方教程中的基本民意调查应用程序索引。

我希望通过在我的基本模板中包含这些变量,在每个页面上包含来自{{user.location}}的Hello,{{user}}的内容。

{{user}}正确呈现,但是{{user.location}}没有显示任何内容,即使我已经创建了一个位置属性并使用DjangoAdmin填充它。

models.py

class UserProfile(models.Model):
    user = models.OneToOneField(User, unique=True)
    location = models.CharField(max_length=120)

    def __unicode__(self):
        return "%s's profile" % self.user

base.html文件

<h1>User is {{ user }} from {{ user.location }}</h1>

我正在努力构思如何通过传递UserProfile来处理视图,以及如何将其与base.html模板相关联(假设我希望在所有页面上显示此消息)。

非常感谢任何帮助+提示/建议!

干杯

1 个答案:

答案 0 :(得分:1)

User和UserProfile是两种不同的模型。但是,由于您从OneToOneFieldUserProfileUser,因此您也可以关注它。

<h1>User is {{ user }} from {{ user.userprofile.location }}</h1>

来自OneToOneField

上的文档
  

如果没有为OneToOneField指定related_name参数,Django将使用当前模型的小写名称作为默认值。