标签: jinja2

使用jinja2模板指令加载外部脚本

我对jinja2和一般模板的使用都很新,所以我想知道是否有一种简单的方法来加载外部javascript.我在考虑使用:

{% block javascript %}
    <script src="myscript.js"></script>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

但我不禁要问:

有没有一种方法可以直接从模板指令中加载这个脚本?

python scripting templates external jinja2

22
推荐指数
1
解决办法
2万
查看次数

jinja2从模板加载模板文件

有没有办法可以从另一个模板文件中加载jinja2模板?就像是

{{ render_template('path/to/file.html') }}
Run Code Online (Sandbox Code Playgroud)

我有一些我想重用的片段,所以拥有这个功能对我来说很重要.

jinja2

22
推荐指数
3
解决办法
2万
查看次数

在Jinja2中测试列表

据我所知,没有办法测试对象是否是Jinja2中的List实例.首先,这是正确的吗?其次,是否有人在Jinja2中实现了自定义测试/扩展?任何帮助都会很棒.

python jinja2

22
推荐指数
3
解决办法
2万
查看次数

在Flask中检查Jinja2中的变量类型

我创建的模板文件包含:

{% if type({'a':1,'b':2}) is dict %}
    print "Oh Yes!!"
{% else %}
    print "Oh No!!!"
{% endif %}
Run Code Online (Sandbox Code Playgroud)

然后Jinja2回应说:

TemplateAssertionError: no test named 'dict'
Run Code Online (Sandbox Code Playgroud)

我是Jinja2和Flask的新手

variables types jinja2 flask

22
推荐指数
3
解决办法
4万
查看次数

寻找Jinja在线(或至少是现场)解析器

我很难理解一些Jinja指令是如何起作用的.为了运行一些测试(最终,分享结果,jsfiddle风格),我真的很感激有一些在线解析器,但在Web上找不到任何东西.

它甚至存在吗?

python jinja2

22
推荐指数
2
解决办法
2万
查看次数

字符%7D在网址查询中的含义是什么?

如果我使用网址访问我的webapp

/vi/5907399890173952.html

然后它工作,但当我查看日志文件,然后googlebot尝试访问生成异常的类似网址:

/vi/5907399890173952.html%7D%7D

这是什么意思,怎么能作为例外处理?来自python的消息是:

 /vi/5251302833520640.html%7D%7D 404 20ms 0kb Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) module=default version=release140319
66.249.67.109 - - [19/Mar/2014:07:53:32 -0700] "GET /vi/5251302833520640.html%7D%7D HTTP/1.1" 404 84 - "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" ms=21 cpu_ms=0 cpm_usd=0.000009 app_engine_release=1.9.1 instance=00c61b117c0bc0f980f2a37a6ac534786055d3ab
E 2014-03-19 15:53:32.678
get() takes exactly 3 arguments (2 given)
Run Code Online (Sandbox Code Playgroud)

我用于网址的正则表达式是

('/vi/(\d+)(\.html?)?', NewHandler)

更新140319 21:54 CET

我想我已经从jinja2模板中发现了泄漏:

{{scored_document.fields.0.value|safe}

我现在用另一个补丁}.

python url google-app-engine jinja2 webapp2

22
推荐指数
1
解决办法
3万
查看次数

使用Jinja2转义JavaScript的字符串?

如何使用Jinja2转义HTML,以便它可以在JavaScript(jQuery)中用作字符串?

如果我使用Django的模板系统,我可以写:

$("#mydiv").append("{{ html_string|escapejs }}");
Run Code Online (Sandbox Code Playgroud)

Django的|escapejs过滤器会逃避html_string(例如引号,特殊字符)可能会破坏此代码块的预期用途的东西,但Jinja2似乎没有等效的过滤器(我在这里错了吗?).

有没有比从Django复制/粘贴代码更清晰的解决方案?

javascript python jinja2

21
推荐指数
3
解决办法
2万
查看次数

使用flask_login会话和jinja2模板

我有简单的jinja2模板和注册/登录链接,我应该在用户登录时隐藏它们,我也使用flask_login模块来处理这个问题.

问题是:如何识别用户是否登录jinja2模板?

python jinja2 flask python-2.7 flask-login

21
推荐指数
1
解决办法
1万
查看次数

在外部javascript文件中使用Jinja2模板引擎

我使用Python和Flask开发Web项目.我只是想知道我是否可以在外部javascript文件中访问python发送的参数?它适用于html文件或嵌入在html文件中的js,但是当javascript是extern时则不行.

见下文.

python代码

@app.route('/index')
def index():
    return render_template('index.html', firstArg = 2, secondArg = 3)
Run Code Online (Sandbox Code Playgroud)

index.html代码

...
<body>
    <p>The first arg is {{firstArg}}.</p>
    <script src="index.js"></script>
</body>
...
Run Code Online (Sandbox Code Playgroud)

和index.js文件

window.onload=function(){
    console.log('{{secondArg}}');
};
Run Code Online (Sandbox Code Playgroud)

所以第一个arg在html文件中是正确的,但第二个在js文件中不起作用.浏览器正在显示Unexpected token {.

也许它不可能在外部js中使用它?

否则我需要在html中插入secondArg作为输入数据并在js文件中获取它但它不是很干净.

如果有人可以提供帮助,谢谢.

javascript python external jinja2 flask

21
推荐指数
1
解决办法
7325
查看次数

检查ansible中Jinja2模板中的dict中是否存在键

我有一个带有所有接口的dict的ans_ host_var:

---
interfaces:
  vlan0:
    ip: 127.0.0.1
    mask: 255.255.255.0
    state: true

  vlan2:
    ip: 127.0.1.1
    mask: 255.255.255.0
    state: true
Run Code Online (Sandbox Code Playgroud)

我想检查dict是否有密钥vlan1,如果确定放入模板值vlan1.ip else put vlan2.ip.

{% if interfaces.vlan1 %} 
# and also I try {% if 'vlan1' in interfaces %}
{{ interfaces.vlan1.ip }};
{% else %}
{{ interfaces.vlan2.ip|default("127.0.0.1") }};
{% endif %};
Run Code Online (Sandbox Code Playgroud)

但我有一个错误:

fatal: [127.0.0.1] => {'msg': "AnsibleUndefinedVariable: One or more undefined variables: 'dict object' has no attribute 'vlan1'", 'failed': True}
Run Code Online (Sandbox Code Playgroud)

发现它必须在Jinja2中工作,但似乎在ansible中不起作用.也许有人有另一种解决这个问题的方法?当我定义vlan1时它工作正常.Ansible版本1.9.2

我试图在python中重现它,如果我的字典没有密钥vlan1,则没有错误.感谢@GUIDO …

python templates dictionary jinja2 ansible

21
推荐指数
2
解决办法
3万
查看次数