无法访问 Django 模板中的属性

Posted

技术标签:

【中文标题】无法访问 Django 模板中的属性【英文标题】:Cannot Access Attribute In Django Template 【发布时间】:2013-06-18 22:18:00 【问题描述】:

查看:

def details(request, id):
    event = Event.objects.filter(id=id)
    return render(request, 'details.html', 'Event' : event)

模板:

% if Event %

    <h1>Event Name:  Event.name </h1>

% else %

    No Event.

% endif %

型号:

class Event(models.Model):
    name = models.CharField(max_length = 30)
    artist = models.ManyToManyField(Artist)
    venue = models.ForeignKey(Venue)
    event_date = models.DateTimeField('event date')
    on_sale = models.DateTimeField('on sale time')


    def __unicode__(self):
        return unicode(self.name)

当我加载页面时,它只会加载Event Name:。当我删除 .name 属性时,它会加载事件,因为它是在数据库中输入的,但它不会从对象加载任何属性。感谢任何帮助/建议,谢谢。

【问题讨论】:

【参考方案1】:

你应该使用 get 而不是 filter:

event = Event.objects.get(id=id)

如果你想在模板中使用过滤器试试这个:

% for item in Event %
    <h1>Event Name:  item.name </h1>
% empty %
    No Event.
% endfor %

【讨论】:

以上是关于无法访问 Django 模板中的属性的主要内容,如果未能解决你的问题,请参考以下文章

Django 模板无法访问重复引号中的 JSON Key: " 'Key' ": " Value "

无法访问 freemarker 模板中的会话属性

无法从继承的模板访问 django 表单

Django 模板无法访问字典查找变量。我在代码中犯了啥错误?

访问模板化 Django 中的表单字段属性

如何访问 django 模板中的 django ManyToManyField