javascript - 如何在 Jinja 2 占位符中包含 javascript 占位符?
问题描述
我正在尝试将此功能嵌入到我的 Flask 应用程序中 --> Scattered Polaroid Gallery
所以,我有一个模板(Jinja2),我在其中显示一堆图像。要访问图像,我正在使用 Flask 的 url_for() 命令,该命令使用符号 ---> {{}}。在应该动态加载图像的 Javascript 文件中,使用了相同的符号,即----> {{}}。我想知道如何将 Javascript 的 {{}} 与 Flask/Jinja 2 {{}} 一起使用
下面是用实际文件名替换 {{img}} 的每个实例的 Javascript 函数。
function addPhotos() {
var template = select('#wrap').innerHTML;
var html = [];
var nav = [];
for (i=0; i<1; i++) {
var _html = template.replace('{{index}}', i)
.replace('img', data[i].img)
.replace('{{caption}}', data[i].caption)
.replace('{{desc}}', data[i].desc);
html.push(_html);
nav.push('<span id="nav_'+i+'" class="i" onclick ="turn(select(\'#photo_'+i+'\'))"> </span>');
}
html.push('<div class="nav">'+nav.join('')+'</div>');
select('#wrap').innerHTML = html.join('');
sort(random([0, data.length]));
}
<div class="mainPage" id="fullpage">
<div class="first section">
<div class="wrap" id="wrap">
<div class="photo photo_front" id="photo_{{index}}" onclick="turn(this)">
<div class="photo-wrap">
<div class="side side-front">
<p class="image">
<!-- <img src="photo/{{img}}"> -->
<img src="{{ url_for('static',filename='photo/{{img}}') }}">
<!-- .replace('{{img}}', data[i].img) -->
</p>
<p class="caption">{{caption}}</p>
</div>
<div class="side side-back">
<p class="desc">{{desc}}</p>
</div>
</div>
</div>
</div>
</div>
以上是同时使用 Javascript 和 Jinja2 {{}} 的模板。
Chrome 调试控制台中显示以下错误。
下面是我的 Flask 应用程序的文件夹结构 -
PS - 我尝试使用图像文件夹的相对路径而不是 url_for() 函数, <img src="../static/photo/{{img}}">
但它也失败了。
在这种情况下,显示以下错误 -
请帮忙。
编辑 -
使用后"
,出现以下错误。
解决方案
您需要使用引号转义大括号。由于您需要在 html 属性中执行此操作,因此src
您还必须转义这些引号,因为 HTML 属性中已经使用了引号,并且实现此目的的方法是使用"
看看下面的img
标签src
属性。如果您想转义不属于 HTML 属性的 Jinja 花括号,则可以使用 jinja{% raw %}
块(请参阅我是如何包围的{{caption}}
)
<div class="mainPage" id="fullpage">
<div class="first section">
<div class="wrap" id="wrap">
<div class="photo photo_front" id="photo_{{index}}" onclick="turn(this)">
<div class="photo-wrap">
<div class="side side-front">
<p class="image">
<img src="{{ url_for('static',filename='photo/"{{img}}"') }}">
</p>
<p class="caption">{% raw %}{{'caption'}}{% endraw %}</p>
</div>
<div class="side side-back">
<p class="desc">{% raw %}{{desc}}{% endraw %}</p>
</div>
</div>
</div>
</div>
</div>
推荐阅读
- unity3d - 我可以在商业游戏中使用 Unity Asset Store 中的免费资源吗?
- twilio - 是否可以发送带有自定义“发件人”或“回复”号码的 Twilio SMS?
- java - PowerShell 终止其命令行检测到的 java 进程
- python-3.x - 是否可以在 Python 中匿名定义装饰器(使用 lambda 表达式)?
- python - 如何编码时间片以与 range() 函数一起使用?
- java - 无法从 InputStream 创建 zip 文件
- javascript - 在循环中同时淡入和淡出容器中的不同文本
- unity3d - 在 Agora Unity SDK 中播放多个视频
- selenium - Selenium Web 驱动程序无法定位元素
- python - 如何在烧瓶应用程序中显示 pythoon scipt 数据