get方法的python:
posts = Post.all().order('num')
for post in posts:
key = post.key()
self.write('<div class = "art"><img src="img?img_id=%s" class = "art" width = "500"></img></div>' % post.key())
self.render("art.html", posts = posts)
art.html:
{% extends "base.html" %}
{% block content %}
<form method="post" class = "art">
{% for post in posts %}
<div class = "art_title">{{post.title}}</div>
<div class = "art_note">{{post.note}}</div>
<br>
{% endfor %}
</form>
</div>
{% endblock %}
这适用于显示单个帖子,但是当有多个帖子时,所有艺术作品都在一个巨型堆中的顶部呈现,然后标题和描述注释在另一个单词堆中呈现。我希望页面能够为一个帖子一起呈现艺术,标题和注释。
如何将带有字符串替换的python for循环插入到html中? (我也尝试将html插入到python中,但是扩展的“base.html”行会让它变得混乱......如果我这样做,我将如何扩展“base.html”?)
编辑:
我试过
posts = Post.all().order('num')
self.render("art.html", posts = posts)
和
<div class = "art_box">
<form method="post" class = "art">
{% for post in posts %}
<div class="art"><img src="img?img_id={{post.key}}" class="art" width="500"></img></div>
<div class = "art_title">{{post.title}}</div>
<div class = "art_note">{{post.note}}</div>
<br>
{% endfor %}
</form>
</div>
根本没有显示图片,只显示标题和描述。
有没有办法可以在html中获取post.key的值并将其替换为url?
答案 0 :(得分:1)
让模板为您完成工作,请注意您的art.html已经在发布帖子。您需要做的就是将图像添加到模板中。通常,您的视图函数用于在模板负责格式化/显示时检索/处理数据。
art.html
...
{% for post in posts %}
<div class="art"><img src="img?img_={{post.key()}}" class="art" width="500"></img></div>
<div class="art_title">{{post.title}}</div>
...
您可能遇到的唯一问题是post.key
是可调用的,而不是某种值。大多数模板引擎都可以正常使用callables,但在极少数情况下,您可能需要自己构建上下文。
编辑:
由于您声明使用的是Jinja,因此必须通过向{{post.key()}}