Flask url_for 在模板的外部 JavaScript 中不起作用

2023-12-09

在index.html 中,我链接到index.js 文件。单击一个按钮,js 会向 Flask 后端发送请求。后端返回静态文件路径:'data/Sharon_4.png'。我想使用以下函数以 HTML 形式呈现它,但它不起作用。为了简化它,我将 URL 替换为特定 URL,如下所示,而不是作为变量。它仍然不起作用。

function test(){
    var mvt = document.getElementById('movieThumbnail')
    var ig = document.createElement('img')
    ig.src = `{{url_for('static', filename='data/haron_4.png')}}`

    mvt.append(ig)
}

在 HTML 中,标签似乎是正确的<img src="{{url_for('static', filename='data/Sharon_4.png')}}">

如果我将此标签直接放在 HTML 或页内脚本中,它就可以工作。但这里在 js 中使用 url_for 却没有。


Jinja2 模板处理器通常在 Flask 应用程序中使用,仅适用于模板文件。您正在通过以下方式导入 JavaScript<script>元素。模板处理器不会看到该 JavaScript。如果您将 JavaScript 直接放入 HTML 文件中,它将由 Jinja2 处理。例子:

<script>
function test(){
    var mvt = document.getElementById('movieThumbnail')
    var ig = document.createElement('img')
    ig.src = `{{url_for('static', filename='data/haron_4.png')}}`

    mvt.append(ig)
}
</script>

您可以做的是使用这个简单的脚本将静态文件夹存储在窗口变量中,并在脚本中使用它。例子:

<script>
window.static_folder = "{{url_for('static')}}";
</script>

然后在脚本中引用全局变量。粗略的例子:

function test(){
    const mvt = document.getElementById('movieThumbnail');
    const ig = document.createElement('img');
    ig.src = `${window.static_folder}/data/haron_4.png`;

    mvt.append(ig);
}

或者,您可以调用 Flask 服务器上的 api 来获取url_for。请看这个例子:

@bp.route('/url_for/')
def public_get_url_for():
    """
    get the url using the url_for method.  url parameters are given as request args
    ie: /url_for?endpoint=stock_edit&stock_id=12
    example:
    $.get({
                url: '/url_for',
                data: {endpoint: 'stock_edit', stock_id: $('#stock_id').val()}
            }).then(url => window.location = url);

    for route:

    @app.route('/stock_edit/<int:stock_id>')
    def stock_edit(stock_id):
        # some code

    :return: the url or 404 if error
    """
    keywords = request.args.to_dict()
    try:
        return url_for(**keywords)
    except Exception as e:
        return str(e), 404
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flask url_for 在模板的外部 JavaScript 中不起作用 的相关文章

随机推荐

  • 使用python接收icecast元数据

    我尝试使用以下脚本获取 mp3 流的冰铸元数据 import requests url http stream jam fm jamfm nmr mp3 128 konsole try response requests get url h
  • 区分机器人和人类访客以获得统计数据?

    我正在寻找自己的简单网络统计脚本 据我所知 路上唯一的主要障碍是区分人类访客和机器人 我想要一个不需要定期维护的解决方案 即我不想使用与机器人相关的用户代理更新文本文件 是否有任何开放服务可以做到这一点 就像 Akismet 处理垃圾邮件一
  • C# SMO - 将表数据编写到文件中。投掷错误

    在重新创建表之前 我尝试创建数据库中包含的数据的备份 我已经连接到服务器并创建文件来存储 SQL 问题是它在最后一行抛出错误 你调用的对象是空的 我一整天都在这个项目上 所以可能会错过一些新的眼睛会有所帮助的东西 这是代码 public v
  • 在父元素和子元素之间绑定一个值,其中子元素是使用 javascript 创建的

    使用 Polymer 有人知道如何在父元素和子元素之间绑定值吗 以下是我的尝试 但它不起作用 Note child component需要使用 JavaScript 创建
  • 获取窗口截图 Windows API

    我正在尝试制作一个在现有 GUI 之上工作的程序来对其进行注释并提供额外的计算和统计信息 我想使用图像识别来做到这一点 因为我在大学里使用 Matlab 和类似的东西学到了很多这方面的知识 我可以获得要执行图像识别的窗口的句柄 但我不知道如
  • 为什么两个不同的数组文字在 Swift 中彼此相等?

    为什么表达 import Foundation a b c c b a 评估为true在 Swift 游乐场 当未导入 Foundation 时 该表达式的计算结果为 false 乔什的答案很接近 但并不完全正确 按住 Option 键并单
  • SQL Server 表可以有两个标识列吗?

    我需要将一列作为主键 另一列作为自动递增订单号字段 这可能吗 编辑 我想我只会使用复合数作为订单号 不管怎么说 多谢拉 CREATE TABLE dbo Foo FooId int IDENTITY 1 1 NOT NULL BarId i
  • 带参数的图像 - HTML

    我不知道如何提出这个问题 我不知道下面的标签是如何工作的 img src img png value 23 这个标签工作正常 并且它正确地渲染了图像 是否value 23有效果吗 或者它被浏览器忽略了 我什至不知道如何谷歌这个 就像向图像传
  • 为什么 System.Windows.Controls.Button 的内边距始终为 10px?

    请参阅屏幕截图 青色边框框是按钮 蓝色填充是矩形 我一生都无法弄清楚如何摆脱按钮中的填充 有没有办法将矩形放置在左上角 使其接触青色边框 Thanks 您是否尝试过设置Rectangle的边际为0
  • 初始加载屏幕上的角度冻结 SVG 动画

    我想在浏览器加载 Angular 5 的脚本和其他资源时播放动画 例如这个 SVG 动画
  • 您必须在实例化此 ParseObject 子类之前注册它

    我在我的中收到以下错误Android应用程序使用Parse You must register this ParseObject subclass before instantiating it In my Application对象 我正
  • Neo4j 在浏览器图形视图中仅显示特定关系

    我有这个密码查询 MATCH i Issue name SN 229 d ON DATE gt s Stage RETURN i MAX d long MIN d long 1 AS Days s and I get these resul
  • 未显示 Toast 消息

    我试图使用以下代码在我的应用程序中显示一条 toast 消息 AlertDialog Builder alert new AlertDialog Builder this alert setTitle Do you want to cont
  • Java类实例递归调用

    我有一个非常基本的java理论问题 为什么 Employee 类在下面的示例中递归地调用其自身 class Employee Employee emp new Employee public class Manager extends Em
  • 阿帕奇 POI 和颜色

    我在使用 Apache POI 时遇到一些问题 如果能得到一些帮助就好了 我想删除 Excel 工作表子部分中的颜色 为此 我尝试的第一件事是渲染我想要清理的单元格 假设仅第一行的单元格 并将其颜色设置为白色 cell getCellSty
  • 识别 Sublime Text 3 代码片段源

    有谁知道如何识别 Sublime Text 3 代码片段的来源 有一个用于 Rails 的 我认为它来自某个包 我已经卸载了该软件包 但该代码片段仍然可以使用 这让我发疯 Press Ctrl Backtick to open the co
  • 如何编写迭代器?

    我有一个节点网络 在节点之间传递结构化数据 对于我的子问题 我们有这个分支 节点的线性序列 nodes source n1 n2 n3 n4 第一个节点是生成器 每个其他节点从输入节点获取值并提供输出值 当前的实现是从管道的普通 get 和
  • jQuery onmouseover + onmouseout / 悬停在两个不同的 div 上

    我有一个问题 这是我的 HTML 的一部分 div Here Hover div div Here content to show div 这是我的 jQuery 脚本的一部分 jQuery div 2 hide jQuery div 1
  • 如何使用 vegas.js 插件添加文本动画

    我正在使用 vegas js 插件 http vegas jaysalvat com documentation 对于我的网站 我想用这些图像显示一些文本 我如何添加一些带有图像的动画文本 在 body 中初始化 vegas js
  • Flask url_for 在模板的外部 JavaScript 中不起作用

    在index html 中 我链接到index js 文件 单击一个按钮 js 会向 Flask 后端发送请求 后端返回静态文件路径 data Sharon 4 png 我想使用以下函数以 HTML 形式呈现它 但它不起作用 为了简化它 我