Questions tagged «jinja2»

Jinja2是用于Python的快速模板引擎。它具有完整的Unicode支持,自动转义,继承,宏和许多其他功能。

1
在jinja2模板中转义jinja2语法
我从Flask的Jinja2模板提供动态页面。现在,我在脚本标签内定义客户端模板,例如Jinja2克隆Nunjucks。问题是,客户端模板具有类似语法<% %>该瓶的Jinja2的解释,而不是可以解释渲染的逐字。 如何使整个脚本块按原样呈现?
88 flask  jinja2 


4
如何直接从文件系统加载Jinja模板
pocoo.org上的jinja API文档指出: 配置Jinja2为应用程序加载模板的最简单方法大致如下: from jinja2 import Environment, PackageLoader env = Environment(loader=PackageLoader('yourapplication', 'templates')) 这将使用默认设置创建一个模板环境,并使用一个加载器在yourapplication python包内的templates文件夹中查找模板。 事实证明,这并不是那么简单,因为您必须制作/安装带有模板的python软件包,这引入了很多不必要的复杂性,尤其是在您无意分发代码的情况下。您可以在此处和此处参考有关该主题的SO问题,但是答案是含糊不清和不令人满意的。 显然,天真的新手想要做的就是直接从文件系统中加载模板,而不是将其作为包中的资源。 怎么做?

3
Ansible:按属性过滤列表
我在Ansible中注册了一个名为“ network”的变量: { "addresses": { "private_ext": [ { "type": "fixed", "addr": "172.16.2.100" } ], "private_man": [ { "type": "fixed", "addr": "172.16.1.100" }, { "type": "floating", "addr": "10.90.80.10" } ] } } 是否可以像这样通过type =“ floating”获取IP地址(“ addr”)? - debug: var={{ network.addresses.private_man | filter type="fixed" | get "addr" }} 我知道语法错误,但是您明白了。
83 jinja2  ansible 


2
如何在Jinja2模板中包含HTML文件?
我正在为使用Jinja模板的服务器使用Flask微框架。 我有一个父级template.html,一些子级模板称为child1.html和child2.html,其中一些子级模板是相当大的HTML文件,我想以某种方式将其拆分,以使工作更清晰。 我的main.py脚本内容: from flask import Flask, request, render_template app = Flask(__name__) @app.route('/') @app.route('/<task>') def home(task=''): return render_template('child1.html', task=task) app.run() 简化的template.html: <!DOCTYPE html> <html> <head></head> <body> <div class="container"> {% block content %}{% endblock %} </div> </body> </html> 魔力在于child1.html: {% extends 'template.html' %} {% block content %} {% if task == …
82 python  html  flask  jinja2 

5
如何迭代Jinja模板中的词典列表?
我试过了: list1 = [{"username": "abhi", "pass": 2087}] return render_template("file_output.html", list1=list1) 在模板中: <table border=2> <tr> <td> Key </td> <td> Value </td> </tr> {% for dictionary in list1 %} {% for key in dictionary %} <tr> <td> <h3>{{ key }}</h3> </td> <td> <h3>{{ dictionary[key] }}</h3> </td> </tr> {% endfor %} {% endfor …

10
在Ansible中转义双花括号
如何在Ansible 1.9.2中转义双花括号? 例如,如何在以下shell命令中转义大括号? - name: Test shell: "docker inspect --format '{{ .NetworkSettings.IPAddress }}' instance1"
77 docker  jinja2  ansible 

3
Jinja2:在循环内更改变量的值
我想在循环内更改在循环外声明的变量的值。但是总是在变化,它将初始值保持在循环之外。 {% set foo = False %} {% for item in items %} {% set foo = True %} {% if foo %} Ok(1)! {% endif %} {% endfor %} {% if foo %} Ok(2)! {% endif %} 这将呈现: Ok(1)! 因此,到目前为止发现的唯一(坏)解决方案是: {% set foo = [] %} {% for item …
77 python  jinja2 

6
如何通过Jinja2将列表从Python传递到JavaScript
假设我有一个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,还是应该逐个循环传递列表中的每个项目?我怎样才能做到这一点?

3
如何将选定的命名参数传递给Jinja2的include上下文?
使用Django模板引擎,当使用命名参数设置自定义上下文时,我可以包括另一个局部模板,如下所示: {% include "list.html" with articles=articles_list1 only %} {% include "list.html" with articles=articles_list2 only %} 正如你可能会假设,articles_list1并且articles_list2是两个不同的列表,但我可以重复使用同样的list.html将被使用模板articles变量。 我正在尝试使用Jinja2实现相同的目的,但是我看不到推荐的方法,因为with不支持该关键字。
76 templates  jinja2 

3
在Jinja中将字符串拆分为列表?
我在jinja2模板中有一些变量,这些变量用';'分隔。 我需要在代码中单独使用这些字符串。即变量为variable1 =“ green; blue” {% list1 = {{ variable1 }}.split(';') %} The grass is {{ list1[0] }} and the boat is {{ list1[1] }} 我可以在渲染模板之前将它们拆分开,但是由于有时在字符串中最多包含10个字符串,因此很混乱。 在执行操作之前,我有一个jsp: <% String[] list1 = val.get("variable1").split(";");%> The grass is <%= list1[0] %> and the boat is <%= list1[1] %> 编辑: 它适用于: {% set list1 …
76 python  jinja2 



7
Jinja模板是否有惯用的文件扩展名?
我需要以编程方式区分Jinja模板文件,其他模板文件(例如ERB)和无模板纯文本文件。 根据Jinja文档: Jinja模板不需要特定的扩展名:.html,.xml或任何其他扩展名都可以。 但是当需要显式扩展时我应该使用什么?.py会引起误解,围绕Jinja Extensions的讨论会严重搜索搜索包括“ jinja”和“ extension”一词的所有内容。 我可以很容易地规定一个项目范围内的约定(.jnj或者.ja想到),但这是针对开放源代码的,因此,如果某个地方已经建立了惯例,那么我不想逆潮流。 编辑1:同样,我了解Jinja项目(故意)没有定义默认文件扩展名。我要问的是,出于某些项目特定的原因,在某些情况下需要使用非官方的约定。 编辑2:说明:这不适用于HTML内容。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.