Flask|Jinjia2|Javascript:将 Flask 模板变量传递到 Javascript

2024-02-12

将变量从 Flask 模板传递到 Javascript 文件的最佳方法是什么?这是我的代码

我的网络应用程序中有一个简单的视图:

@webapp.route('/bars')
def plot_d3_bars():
  return render_template("bars.html", calendarMap = calendarMap)

我有一个模板化的 HTML 文件,如下所示:

{% extends "base.html" %}

{% block title %} Bar View {% endblock %}

{% block content %}

{% with calendarMap=calendarMap %}
    {% include "buttons.html" %}
{% endwith %}

<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
<script src="/static/css/d3.tip.v0.6.3.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>

<!-- Custom codes for d3 plotting -->
<link href="/static/css/bars.css" rel="stylesheet">
<script> var calendarMap = {{ calendarMap|tojson }}; </script>
<script src="/static/bars.js"></script>

{% endblock %}

之前的答案告诉我,我可以将变量 jsonify 为 JSON 对象,然后就可以使用它了。但是,我想在bars.js 中使用calendarMap 吗?但我遇到了一些范围界定问题(即,bars.js 无法识别此 calendarMap),我应该做什么?


好吧,也许为时已晚,但我们开始吧。

当您使用嵌入 HTML 代码中的 JavaScript 代码时,该脚本将与 HTML 一起呈现。因此,JavaScript 中引用的任何变量(作为 Flask 变量)都将在呈现的页面中可用。

当您使用 HTML 代码中链接的外部 JavaScript 文件时,在呈现 HTML 之前,其代码已经存在。在某些情况下,我可能会说大多数情况下,您不是该文件的所有者。因此 JS 文件中引用的任何变量都不会被渲染。

您可以通过 JS 代码将此变量放入 HTML 中,并使用外部 JS 文件中的函数使用此数据。

或者您可以在渲染模板之前渲染此 JS 文件并使用它。但我强烈建议不要使用这种方法。

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

Flask|Jinjia2|Javascript:将 Flask 模板变量传递到 Javascript 的相关文章

随机推荐

  • C++ 类似 C# 中的 Vector 类

    C 的类似类是什么std vector in C 我想要一个类 它在内部保存一个内部数组并支持在后面插入O 1 time 这是一个包含一些内容的列表C C 容器是roughly彼此等价 不是完全替代 std vector http en c
  • 如何在 R 编程中从数据框创建表格图像

    如何将数据框中的数据转换为表格的图形 我的数据在dataframe并想将其转换为图形 以便我可以使用 Power BI 软件显示它 e g x lt data frame Sex c M M F F F Color c brown blue
  • ImportError:无法使用 Brew 导入名称 HTTPSHandler [重复]

    这个问题在这里已经有答案了 我在设置 python 环境时遇到了一些麻烦 我安装了 pythonbrew但是当我尝试使用 easy install 或 pip 安装某些东西时 我收到此错误 在本例中我尝试使用 pip 安装软件包 我正在使用
  • 今天扩展在 iOS 8.1.2 上启动之前崩溃了

    我一直在制作一个今日扩展 可以从提要中下载文章并显示最新的文章 整个事情在 iOS 8 上运行良好 在 iOS 8 1 上仍然运行 然后是 iOS 8 1 2 我们开始抱怨今天的扩展不再运行 我尝试在 iOS 8 1 2 设备上进行调试 在
  • ActionController::估值中的UrlGenerationError#new

    我读过其他相关文章UrlGenerationError似乎指向一个单词的单数或复数 但我认为这不是问题所在 当我从valuations form html erb中删除时它起作用 提交 form name tag list readd 然后
  • Stripe:没有这样的令牌。测试模式下存在类似的对象,但使用实时模式密钥来发出此请求

    在实时模式下使用 Stripe 时 我收到以下 PHP 错误 没有这样的令牌 tok fgfhn 测试模式下存在类似的对象 但使用实时模式密钥来发出此请求 在 Stripe 测试模式下一切运行良好 并且我已切换到实时 API 密钥 我像这样
  • 检测字符串是否包含字符串数组的任何元素

    如何检测字符串是否包含字符串数组 单词 的任何成员 这是数组 let str String house near the beach let wordGroups String beach waterfront with a water v
  • Javascript 中的事件处理程序、闭包和垃圾收集

    我的应用程序尚未遇到内存泄漏 但我担心将来可能出现问题 我想知道是否做这样的事情 SomeClass prototype someMethod function var that this this div2 click function
  • 使用 WebGL 进行 2D 图像处理

    我打算用 JS 创建一个简单的照片编辑器 我的主要问题是 是否可以创建实时渲染的滤镜 例如 调整亮度和饱和度 我所需要的只是一个 2D 图像 我可以在其中使用 GPU 应用滤镜 我读过的所有教程都非常复杂 并且没有真正解释 API 的含义
  • Go的类型推断算法

    Go编译器使用什么类型推断算法 我尝试在 golang 上查找此内容 但找不到文档 我很想假设这将是欣德利 米尔纳 但我想确定一下 Go 当然不使用 Hindley Milner 你为什么那么想 实际上 Go 一般没有类型推断 仅与 构造
  • 如何创建本地主机服务器来运行 AngularJS 项目

    我使用 XAMPP 和 JetBrains WebStorm 来运行 AngularJS 项目 但结构复杂 性能低下 还有其他方法来运行 AngularJS 项目吗 如果您正在运行node jshttp服务器 https www npmjs
  • 使用 jest.useFakeTimers() 时,为什么 setImmediate 不会无限期超时?

    使用时jest useFakeTimers 为什么setTimeout and setImmediate 表现不同 beforeAll jest useFakeTimers afterAll jest useRealTimers descr
  • 如何在 Hbase 中连接两个表

    Problem 我是 Hbase 新手 遇到了需要连接两个表的情况 假设我有 Employee 表和 Department 表都是在 Hbase 中创建的 通过阅读 Hbase 的实际操作 我了解到我们无法连接 Hbase 中的表 解决方案
  • 将元素添加到 Iframe

    我正在创建一个包含 iframe 的页面 我的目标是创建一个将添加到 iframe 内容头部的 javascript 但我总是收到暗示 iframe contentDocument 为空的错误 主页代码
  • 无法操作 jQuery 中 ajax 请求插入的数据

    调用服务器并将其返回的数据转换为表后 我使用 jQuery 的 html 语法将其插入页面中 之后数据出现在页面中 但我无法使用 jQuery 操作它 继承人的代码
  • 在 numpy 中使用 2d 掩码掩码 3d 数组

    我有一个 3 维数组 我想使用一个 2 维数组来屏蔽它 该数组的维度与 3 维数组最右边的两个数组的维度相同 有没有办法在不编写以下循环的情况下执行此操作 import numpy as np nx 2 nt 4 field3d np ra
  • 同一角色的实例之间的 Azure 网络通信

    同一角色的多个角色实例是否可以通过获取所有这些实例侦听的特定端点的 VIP 虚拟 IP 地址来相互通信RoleEnvironment 如果是这样 返回的 VIP 可以负载均衡到调用者 的RoleEnvironment方法 实例本身 角色实例
  • 设置 UINavigationbar 的标题不起作用

    我浏览了一些在线教程 但没有任何效果 这是我的 viewController 的代码 import UIKit class ViewController UINavigationController let textView UITextV
  • 在 MySQL 中查找下一个可用的 id

    我必须在 MySQL 数据库中找到下一个可用的 id 如果数据库中有 5 个数据 我必须获取下一个可用的插入位置 即 6 我怎样才能做到这一点 我用过MAX id 但是当我从数据库中删除一些行时 它仍然保留未更新的旧最大值 更新2014 1
  • Flask|Jinjia2|Javascript:将 Flask 模板变量传递到 Javascript

    将变量从 Flask 模板传递到 Javascript 文件的最佳方法是什么 这是我的代码 我的网络应用程序中有一个简单的视图 webapp route bars def plot d3 bars return render templat