1

我正在尝试解决这个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>...

问题是结果是按字面意思读取的。也就是说,当浏览index.html我看到 html 标签时:

在此处输入图像描述

我怀疑我的整个方法是错误的。应该怎么做?

4

1 回答 1

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,您不妨将其内容直接移动到forindex.html 内的循环中。

于 2013-10-01T03:10:01.547 回答