如何将此python代码插入到我的html模板中?

时间:2013-12-14 02:51:04

标签: python html string google-app-engine

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?

1 个答案:

答案 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()}}

添加括号来明确方法调用