将HTML内部的Python代码与传入的变量相结合

问题描述 投票:1回答:1

我正在创建一个HTMLBottlePython)的网上商店。我知道如何在HTMLPython之间传递数据,以及如何在Python中编写HTML代码(参考:http://karrigell.sourceforge.net/en/pythoninsidehtml.html)。

我挣扎的是将Python代码写入从HTML传递到Python的引用中。

我从数据库加载图像,因为我有很多。我设置并将变量image_name(index)传递给HTML,如下所示:

@get('/store')
def showStore():
    images = models.images() # reads from database
    data = ', number_of_images={}'.format(len(images))

    for (id, title, path) in images:
        data += ', image_name{}={}, '.format(id, path)
        data += 'image_title{}={}'.format(id, title)

    return template('store.html' + data)

store.html的相关部分:

<!-- Portfolio Gallery Grid -->

<div class="row">
    <% for i in range(1, number_of_images+1): %>
      <div class="column">
        <div class="content">
          <img src="static/images/{{image_name<%i%>}}.jpg">
          <h3> {{image_title<%i%>}} </h3>
        </div>
      </div>
    <% end %>
</div>

由于Bottle不是那么出名:{{image_title}}中的HTML获得了template (html, variables)传入的值。块<% %>使您可以在其中编写Python代码。

当我没有在HTML中使用图像属性的索引时,一切都正常工作,所以HTMLfor loop确实有效,问题在于这部分:

{{image_title<%i%>}}

在我看来,<%i%>应该创建一个变量image_titlei,但显然它没有。

我得到一个template not found错误,可能是因为我传入的变量(来自.py文件)在HTML中不存在。

我非常希望动态地执行此操作而不是对每个图像进行硬编码的原因是我有很多这些图像,并且每个图像都有我在这里遗漏的相关数据的整个表格,因为我会以与图像相同的方式检索它名称和头衔。

我很感激任何帮助正确结合Python内部的HTML与传入的变量,因为我真的想动态地做它

python html css bottle
1个回答
4
投票

这里有相当多的错误。

您找不到模板错误实际上与您在该模板中执行的奇怪操作无关。这是因为您在Python代码的最后一行调用data时将模板名称与template()字符串连接起来。我不知道瓶子,但我绝对肯定数据需要是该功能的第二个参数:

return template('store.html', data)

至于其余部分,绝对没有必要做你在那里做的任何事情。只需将图像作为列表传递,然后在模板中迭代该列表。动态变量总是一个坏主意,这对模板和标准Python代码同样适用。

(虽然请注意,您甚至不创建任何动态变量;您只需要一个字符串,格式化为看起来像一组变量赋值。但这并不能使它实际上在任何地方分配任何变量。)

© www.soinside.com 2019 - 2024. All rights reserved.