我正在尝试解决这个web2py
问题,我认为我对正在发生的事情有一些基本的误解。
说我有一个商店,我希望在我的index.html
多个包含产品的盒子里。我希望从模板中解析每个这样的盒子。
我尝试采用以下架构。在控制器中我有
def index():
products = db().select(db.products.ALL)
return dict(products=products)
index.html
中的:
{{for i in range(0,len(products)):}}
{{ context=dict(product=products[i]) }}
{{ =response.render('template.html', context)}}
{{pass}}
并且在template.html
我有类似
<div id=...> <h1> {{=product.price}} </h1>...
问题是结果是 literaly 。也就是说,当浏览index.html
我看到html标签时:
我怀疑我的整个方法都是错误的。如何做到这一点?
答案 0 :(得分:3)
{{for product in products:}}
{{=XML(response.render('template.html', product.as_dict()))}}
{{pass}}
在template.html中:
<div id=...> <h1> {{=price}} </h1>...
response.render()
返回一个字符串,所有字符串都在模板中转义。要防止转义,必须将字符串包装在XML()
。
以上还包括一些简化。在for
循环中,您可以直接遍历products
中的行,然后您可以将单个产品行转换为dict,并将该dict作为上下文传递给template.html(所以你可以只引用price
而不是product.price
)。
注意,如果您不需要在其他地方使用template.html,您也可以直接将其内容移动到index.html中的for
循环中。