2013-12-14 113 views
1

蟒蛇GET方法:如何将此Python代码插入到我的html模板中?

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

让模板为您做好工作,注意您的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是某种形式的调用,而不是一个值。大多数模板引擎都可以使用可调参数工作,但在极少数情况下,您可能需要自己构建上下文。

编辑:

既然你说你正在使用神社,方法调用必须明确加入圆括号{{post.key()}}

+0

我所做的更改进行;查看编辑 – mango

+0

Jinja不在乎你的花括号是在标签内还是在标签之外;但是,您确实需要明确地调用诸如“{{post.key()}}”之类的函数,而不是使用“{{post.key}}”。注意括号,其他模板引擎隐式地调用函数。 – kalhartt

+0

huzzah!图像回来了。谢谢,这是有道理的。 – mango