如何通过 Jinja2 将列表从 Python 传递到 JavaScript

2023-12-15

假设我有一个 Python 变量:

list_of_items = ['1','2','3','4','5']

我通过渲染 HTML 将它传递给 Jinja,并且我在 JavaScript 中还有一个函数,称为somefunction(variable)。我正在尝试通过每一项list_of_items。我尝试过这样的事情:

{% for item in list_of_items %}
<span onclick="somefunction({{item}})">{{item}}</span><br>
{% endfor %}

是否可以将列表从 Python 传递到 JavaScript,还是应该在循环中逐项传递列表中的每个项目?我怎样才能做到这一点?


要将一些上下文数据传递给 javascript 代码,您必须以 javascript (即 JSON)“理解”的方式对其进行序列化。您还需要使用以下命令将其标记为安全safeJinja 过滤器,防止您的数据被 html 转义。

您可以通过执行类似的操作来实现此目的:

The view

import json

@app.route('/')
def my_view():
    data = [1, 'foo']
    return render_template('index.html', data=json.dumps(data))

模板

<script type="text/javascript">
    function test_func(data) {
        console.log(data);
    }
    test_func({{ data|safe }})
</script>

编辑 - 确切答案

因此,为了准确实现您想要的效果(循环项目列表,并将它们传递给 JavaScript 函数),您需要分别序列化列表中的每个项目。您的代码将如下所示:

The view

import json

@app.route('/')
def my_view():
    data = [1, "foo"]
    return render_template('index.html', data=map(json.dumps, data))

模板

{% for item in data %}
    <span onclick=someFunction({{ item|safe }});>{{ item }}</span>
{% endfor %}

Edit 2

在我的示例中,我使用Flask,我不知道你使用的是什么框架,但你明白了,你只需让它适合你使用的框架即可。

编辑3(安全警告)

切勿对用户提供的数据执行此操作,仅对受信任的数据执行此操作!

否则,您的应用程序将面临 XSS 漏洞!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过 Jinja2 将列表从 Python 传递到 JavaScript 的相关文章

  • Python 3:将字符串转换为变量[重复]

    这个问题在这里已经有答案了 我正在从 txt 文件读取文本 并且需要使用我读取的数据之一作为类实例的变量 class Sports def init self players 0 location name self players pla
  • 使用 python/numpy 重塑数组

    我想重塑以下数组 gt gt gt test array 11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44 为了得到 gt gt gt test2 array 11 12 21 22 13 14
  • 无法导入 langchain.agents.load_tools

    我正在尝试使用 LangChain Agents 但无法导入 load tools 版本 langchain 0 0 27 我尝试过这些 from langchain agents import initialize agent from
  • 如何使输入字段和提交按钮变灰

    我想变灰这两件事 http doorsplit heroku com 歌曲输入字段和提交按钮 直到用户输入艺术家 有没有一种简单的方法可以通过 JQuery 来做到这一点 艺术家输入字段的id是 request artist 你可以这样做
  • Firefox 书签探索未超过 Javascript 的第一级

    我已经编写了一些代码来探索我的 Firefox 书签 但我只获得了第一级书签 即我没有获得文件夹中的链接 e g 搜索引擎 雅虎网站 谷歌网站 在此示例中 我只能访问 Search engines 和 google com 不能访问 yah
  • 提交表单并重定向页面

    我在 SO 上看到了很多与此相关的其他问题 但没有一个对我有用 我正在尝试提交POST表单 然后将用户重定向到另一个页面 但我无法同时实现这两种情况 我可以获取重定向或帖子 但不能同时获取两者 这是我现在所拥有的
  • Angular 2+ 安全性;保护服务器上的延迟加载模块

    我有一个 Angular 2 应用程序 用户可以在其中输入个人数据 该数据在应用程序的另一部分进行分析 该部分仅适用于具有特定权限的人员 问题是我们不想让未经授权的人知道how我们正在分析这些数据 因此 如果他们能够在应用程序中查看模板 那
  • PySpark groupByKey 返回 pyspark.resultiterable.ResultIterable

    我试图找出为什么我的 groupByKey 返回以下内容 0
  • FireFox 中的自动滚动

    我的应用程序是实时聊天 我有一个 Div 来包装消息 每条消息都是一个 div 所以 在几条消息之后 我的 DOM 看起来像这样 div div Message number two div div div div
  • 带有 LSTM 的 GridSearchCV/RandomizedSearchCV

    我一直在尝试通过 RandomizedSearchCV 调整 LSTM 的超参数 我的代码如下 X train X train reshape X train shape 0 1 X train shape 1 X test X test
  • Python:Goslate 翻译请求返回“503:服务不可用”[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我们不允许提出寻求书籍 工具 软件库等推荐的问题 您可以编辑问题 以便用事实和引文来回答 这个问题似乎不是关于主要由程序员使用的特定编程问
  • 如何更改此 jquery 插件的时区/时间戳?

    我正在使用这个名为 timeago 的插件 在这里找到 timeago yarp com 它工作得很好 只是它在似乎不同的时区运行 我住在美国东部 费城时区 当我将准确的 EST 时间放入 timeago 插件时 比如 2011 05 28
  • 如果 PyPy 快 6.3 倍,为什么我不应该使用 PyPy 而不是 CPython?

    我已经听到很多关于PyPy http en wikipedia org wiki PyPy项目 他们声称它比现有技术快 6 3 倍CPython http en wikipedia org wiki CPython口译员开启他们的网站 ht
  • JQuery 图像上传不适用于未来的活动

    我希望我的用户可以通过帖子上传图像 因此 每个回复表单都有一个上传表单 用户可以通过单击上传按钮上传图像 然后单击提交来提交帖子 现在我的上传表单可以上传第一个回复的图像 但第二个回复的上传不起作用 我的提交过程 Ajax 在 php 提交
  • 如何仅在最后一个
  • 处给出透明六边形角度?
  • 我必须制作这样的菜单 替代文本 http shup com Shup 330421 1104422739 My Desktop png http shup com Shup 330421 1104422739 My Desktop png
  • 如何使用 Boto3 启动具有 IAM 角色的 EC2 实例?

    我无法弄清楚如何使用指定的 IAM 角色在 Boto3 中启动 EC2 实例 以下是迄今为止我如何成功创建实例的一些示例代码 import boto3 ec2 boto3 resource ec2 region name us west 2
  • 在virtualenv中下载sqlite3

    我正在尝试使用命令创建应用程序python3 manage py startapp webapp但我收到一条错误消息 django core exceptions ImproperlyConfigured 加载时出错 pysqlite2 或
  • pytest找不到模块[重复]

    这个问题在这里已经有答案了 我正在关注pytest 良好实践 https docs pytest org en latest explanation goodpractices html test discovery或者至少我认为我是 但是
  • fullCalendar 未显示正确的结束日期

    我正在看调试页面 http jsbin com wukofacaxu edit js outputFullCalendar 官方网站的 我想安排一个活动时间为 22 09 2015 至 30 09 2015 dd mm yyyy 但它只显示
  • 如何从图像输入中获取 xy 坐标?

    我有一个输入设置为图像类型

随机推荐

  • Angular 2以间隔执行可观察的

    假设我有以下代码 let sub Observable interval 1000 map x gt let date1 Math floor new Date getTime 1000 this diff date2 date1 subs
  • jQuery Ready 回调的调用顺序

    如果页面中有两个 javaScript 函数 则需要在文档加载完成时调用它们 是否有可能任何函数都可以首先执行 或者它总是第一个首先执行的函数 因此 如果使用 jQuery 如果您有以下代码 document ready function
  • 动态加载Javascript文件和加载完成事件

    今天我一直致力于加载动态 javascript 代码 文件 我使用的解决方案是 function loadScript scriptUrl var head document getElementsByTagName head 0 var
  • Xamarin.Forms 将数据从设备特定代码返回到表单

    我尝试从 Xamarin Forms 代码中获取当前位置 但没有成功 我尝试过Xamarin Forms 移动服务从他们的示例代码 在这里找到http github com aritchie acr xamarin forms 但是它非常复
  • 在android中将图像存储到SQLite中

    我想将图像存储在 SQLite 数据库中 该图像是从 SD 卡中选择的 在谷歌搜索后我发现BLOB是在数据库中存储图像的方式 this link随后插入 但它对我不起作用 如何将图像转换为blob 如何以 blob 格式将图像存储在数据库中
  • 当标识符存在时,“接收者没有与标识符的连接”

    对于 iOS 应用程序 我有一个故事板和多个控制器 以及从控制器开始的转场游戏类至控制器设置类 Segue 在控制器视图中游戏类有一个名为游戏设置 然而 当我想从我的游戏类 self performSegueWithIdentifier G
  • 在 Objective-C 中,方法的绑定真的发生在“运行时”吗?

    听说Objective C受到了SmallTalk的 消息传递机制 的影响 Objective C 和 Smalltalk 一样 可以使用动态类型 一个对象可以是 发送了一条未在其接口中指定的消息 这可以让 为了增加灵活性 因为它允许对象
  • 将 PictureBox 内的图片移动到另一个 PictureBox

    如何将一个图片框内的图片移动到另一个图片框 我想用它来移动棋子 我为每个地方都有一个拍摄的图片盒 所以我有 64 个图片盒 你可以只分配Image将一个图片框显示到另一个图片框 如果您随后想要从原始图片框中删除该图像 以便它不会显示两次 您
  • CSS3/JS 在动画期间获取元素的位置

    我需要获取元素的位置 使用 jQuery mydiv position left 不过我需要在期间这样做css3 translate animation div 位置的动画翻译包含在position data 是否可以在动画期间获取元素的位
  • PHP 将磁盘上的文件输出到浏览器

    我想用 PHP 向浏览器提供现有文件 我看过有关 image jpeg 的示例 但该函数似乎将文件保存到磁盘 您必须首先创建一个正确大小的图像对象 或者我只是不明白它 在 asp net 中 我通过读取字节数组中的文件 然后调用 conte
  • Ada:gnat gprbuild 如何链接到库中?

    在我正在处理的这个多语言 GPRBuild 项目中 我有一些 C 库文件 a 我需要链接到我的可执行文件中 是否有 gpr 属性告诉它链接什么或无论如何将 l L 开关传递给链接器 或者甚至更好 Project my library is
  • JSF:更可定制的 selectManyCheckbox 和 selectOneRadio

    我正在使用 selectManyCheckboxes 和 selectOneRadios 我想以某种方式自定义它们 如果可以根据某个属性对 selectItems 进行分组 例如 每个组有一个标题或每个组之间有一条线 那就足够了 有没有办法
  • 为 PostgreSQL 设置 lc_monetary

    我该如何设置lc monetary以显示money docs 数据类型为欧元 I tried change postgresql conf并设置lc monetary de DE UTF 8 euro PG 不会因此更改而启动 当前设置为e
  • 尝试使用 Microsoft.Office.Interop.Excel.Workbooks.Open() 打开 Excel 时出现异常 HResult 0x800a03ec

    如果我尝试在客户端计算机上打开 Excel 文件 则会引发以下异常 Exception from HRESULT 0x800A03EC 内部异常 空 堆栈跟踪 at Microsoft Office Interop Excel Workbo
  • enumerateObjectsUsingBlock: 的 BOOL *stop 参数有何用途?

    我一直在使用enumerateObjectsUsingBlock 最近为了我的快速枚举需求 我很难理解BOOL stop在枚举块中 The NSArray类参考状态 stop 对布尔值的引用 该块可以将值设置为YES到 停止对数组的进一步处
  • IE 中的 UpdatePanel 速度缓慢

    我正在开发一个 ASP Net 应用程序 并致力于向其中添加一些 Ajax 以加快某些区域的速度 我关注的第一个领域是教师报告孩子们的出勤情况 以及一些其他数据 的出勤区域 这需要很快 我创建了一个双控件设置 用户单击图标 然后通过 Jav
  • woocommerce_form_field 和隐藏字段

    我正在尝试将自定义字段添加到 WooCommerce 结帐中 但似乎没有隐藏字段的输出 In woocommerce template php 隐藏字段属于这种开关情况 default field apply filters woocomm
  • xgboost:线性增强器gblinear使用了哪些参数?

    在网上查看时 我仍然对线性助推器感到困惑gblinear正是 我不是alone 继文档它只有 3 个参数lambda lambda bias and alpha 也许应该说 附加参数 如果我正确理解这一点 那么线性增强器会 相当标准 线性增
  • 如何使用 Python 打开和处理存储在 Google Cloud Storage 中的 CSV 文件

    我正在使用 Google 云存储客户端库 我正在尝试使用以下代码打开并处理 CSV 文件 已上传到存储桶 filename
  • 如何通过 Jinja2 将列表从 Python 传递到 JavaScript

    假设我有一个 Python 变量 list of items 1 2 3 4 5 我通过渲染 HTML 将它传递给 Jinja 并且我在 JavaScript 中还有一个函数 称为somefunction variable 我正在尝试通过每