从 python 列表中提取值作为单独的实体

Extracting values out of a python list as individual entities

请那里的人因为我现在正在拔头发: 我想从从数据库中提取的列表中提取图片,并将它们存储在 JavaScript 数组中用于幻灯片放映。我正在使用 web2py 框架。 控制器

>`def form1Details():
  form=db.compForm(request.args(0))
  forms=db(db.compFormPages.formName==form.id).\
  select(db.compFormPages.ALL)
  return locals()

`

图像的形式多种多样,所以我想在我的视图中显示它们,这样每张图片都单独存储在一个 JavaScript 数组中,用于幻灯片放映,如下所示

VIEW

>`{{for pic in forms:}}
 <script>
function slideShow()
{
images = ["{{=URL('download',args=pic.formImage)}}",
"{{=URL('download',args=pic2.formImage)}}"],
"{{=URL('download',args=pic3.formImage)}}"];
descriptions=['{{=pic.formTitle}}',
'{{=pic2.formTitle}}',
'{{=pic2.formTitle}}';
...............
...............
</script>
}`

我如何单独提取它们以实现上面视图中的内容,我可以使用我能得到的所有帮助,谢谢。

假设您的目标是一些 Javascript 代码,其中一个变量保存一个 URL 数组,另一个变量保存一个描述数组,一个简单的方法是使用 ASSIGNJS helper,它将写入 Javascript 变量并通过将关联的 Python 数据结构转换为 JSON 来生成它们的值。所以,在视图中:

<script>
function slideShow() {
  {{=ASSIGNJS(images=[URL('default', 'download', args=form.formImage)
                      for form in forms],
              descriptions=[form.formTitle for form in forms])}}
  ...
}
</script>

这将产生 Javascript 像这样:

var images = ["/myapp/default/download/image1", "/myapp/default/download/image2", ...];
var descriptions = ["Title 1", "Title 2", ...]

您也可以考虑生成一个 Javascript 对象数组,其中包含每个图像的 URL 和描述:

{{=ASSIGNJS(images=[dict(url=URL('default', 'download', args=form.formImage),
                         description=form.formTitle)
                    for form in forms])}}

这将产生:

var images = [{"url": "/myapp/default/download/image1", "description": "Title 1"}, ...];