将字典列表打印到模板

3
这可能是一个愚蠢的问题,但我是新手,需要一些帮助。
我需要将字典打印到模板中。
template_var = {}
settings = Article.objects.filter().values('title','content')
for some in settings:
    pprint.pprint(some)

控制台日志的输出为

{'content': u'add blog ', 'title': u'blog here'}
{'content': u'fweferwgfwefw', 'title': u'few'}
{'content': u'fsvbfsvbsfvsdfv', 'title': u' fsfsbfsbvsfvb'}

我是这样将 some 传递给 template_var['article'] = some的。在我的HTML中,我像这样做:

{% for content in some %}
    {{ content }}
{% endfor %}

但是那并没有起作用。

它为什么不工作?它是什么都不显示吗?还是显示错误信息?它是否打印出了意料之外的东西? - falsetru
2个回答

2

你在for语句中遍历settings

for some in settings:
    pprint.pprint(some)

但是,视图代码将some而不是settings传递给模板,并对其进行迭代。除此之外,代码将变量作为article传递,但在模板中使用的却是some

请使它们保持一致:

视图

template_var['settings'] = settings

模板

{% for some in settings %}
    {{ some }}
{% endfor %}

很棒,现在可以工作了。我可以问一个不是关于这个的问题吗?看一下Article 模型中的 User 外键,所以我只能通过 user_id 进行过滤,但是在HTML中,我只想打印用户名或名字,例如 some.username,我该怎么做? - user3895077
@iask,Article.objects.filter().values('title','content', 'user__username', 'user__firstname');现在你可以在模板中访问用户名和名字。{{ some.user__username }} / {{ some.user__firstname }} - falsetru
如果我这样做,会出现“无法解析关键字,可选项为user、user_id”的错误。 - user3895077
@iask,啊,我的错误。应该是双下划线:user__usernameuser__firstname - falsetru
没错...正在工作..昨天你也帮了我。你真的帮助我学习了。 - user3895077

-1
如果你想将字典打印到模板中,可以在views.py中进行操作。
return render(request, "template.html", { 'settings' : settings})

并且在template.html中

这是用于获取整个字典的

{% for set1 in settings %}
  {{set1}}
{% endfor %}

这是用于获取字典中每个元素的代码

   {% for set1 in settings %}
          {{set1.content}}<br/>
{{set1.title}}
        {% endfor %}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接