jinja2 相关问题

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

如何使用flask和jinja2从sql数据库获取网页标题?

我有一个表,用于存储网页的标题。我在 python 中创建了一个函数,它以字符串形式返回标题。在 jinja 中我到底如何访问该功能?我不想通过

回答 1 投票 0

从循环表单传递隐藏的输入值

我的代码的简化版本: html {% 类别中的 c %} {{ form.hidden_tag() }} 我的代码的简化版本: html {% for c in categories %} <form action="" method="post"> {{ form.hidden_tag() }} <input type="hidden" name="e" value='{{ c.id }}'> {{ form.submit() }} {% endfor %} routes.py categories = Category.query.all() form = AddAttributeForm() if form.validate_on_submit(): d = request.form.get('e') print(d) 在这种情况下,假设我有 3 个类别。 当我检查渲染的 html 时,我可以清楚地看到每个循环形式中 c 的正确值: <input type="hidden" name="e" value="1"> <input type="hidden" name="e" value="2"> <input type="hidden" name="e" value="3"> 但是提交表单时,e(因此d)总是给我值1。 这里的问题是(1)为什么? (2) 如何克服这个问题并将 c 的实际值传递给我的代码? 问题出在 html 中。这里没有显示,有一些模态弹出,它们都有相同的名称,因为它是在一个循环中。因此,更改模式名称打开了正确的表单。

回答 1 投票 0

将字典从 pythonFlask 传递到 Jinja2,错误不断告诉我变量未定义

总体而言,我的目标是使用通过 Flask 传递到 jinja 循环的字典中的数据动态更新 html 中的表格。 尝试使用

回答 1 投票 0

如何在 Ansible 中的每个列表元素之前添加参数?

我想在从带有连接的列表中获取的字符串之前添加一个参数。这怎么可能? 我的列表在我的 ansible.yaml 中定义为变量: 测试: 列表: - /etc/a - /etc/b ...

回答 1 投票 0

如何在ansible中的每个列表元素之前添加参数?

我想在从带有连接的列表中获取的字符串之前添加一个参数。这怎么可能? 我的列表在我的 ansible.yaml 中定义为变量: 测试: 列表: - /etc/a - /etc/b ...

回答 1 投票 0

jinja2 字符串比较当一个值为空时?

Jinja2 模板代码: {% if u.user_name == u.user_email %} {{ u.user_email }} {% 别的 %} {{ u.user_name }} {{ u.user_email }} {% 万一 %} 通常数据源设置user_name...

回答 2 投票 0

循环 YAML 字典

循环嵌套 YAML 结构时,出现以下错误: [host] (item=script.sh) => {"ansible_loop_var": "item", "changed": false, "item&qu...

回答 1 投票 0

Jinja2 嵌套 YAML 循环

循环嵌套 YAML 结构时,出现以下错误: [host] (item=script.sh) => {"ansible_loop_var": "item", "changed": false, "item&quo...

回答 1 投票 0

如何在 DBT 中进行透视而不聚合值

使用 DBT,如何在不聚合的情况下对表进行透视?在查看透视宏时,它提到了聚合函数,默认为 sum。 可视化问题: 颜色 日期 数量 ...

回答 1 投票 0

Jinja2 将特定 HTML 标签标记为安全

我知道 jinja 中有安全过滤器和逃生过滤器,但我找不到解决我的问题的方法。 我有以下字符串: mystring = """alert('我不安全')</s...</desc> <question vote="5"> <p>我知道 jinja 中有安全过滤器和逃生过滤器,但我找不到解决我的问题的方法。</p> <p>我有以下字符串:</p> <pre><code>mystring = &#34;&#34;&#34;&lt;script&gt;alert(&#39;I&#39;m unsafe&#39;)&lt;/script&gt; I just entered a new line Two new lines now!&#34;&#34;&#34; </code></pre> <p>我想在 <pre><code>&lt;p&gt;</code></pre> 标签中使用它来正确显示换行符:</p> <pre><code>&lt;p&gt;{{mystring | replace(&#39;\n&#39;, &#39;&lt;br&gt;&#39;)}}&lt;/p&gt; </code></pre> <p>这不起作用,因为 Jinja2 自动转义 HTML 标签,但如果我这样做:</p> <pre><code>&lt;p&gt;{{mystring | replace(&#39;\n&#39;, &#39;&lt;br&gt;&#39;) | safe }}&lt;/p&gt; </code></pre> <p>这样就不安全了。</p> <p>我尝试过的是:</p> <pre><code>&lt;p&gt;{{mystring | escape | replace(&#39;\n&#39;, &#39;&lt;br&gt;&#39;) | safe }}&lt;/p&gt; </code></pre> <p>但是上面的方法不起作用,<pre><code>&lt;br&gt;</code></pre>由于某种原因仍然被转义了</p> <p>怎样才能让<pre><code>&lt;br&gt;</code></pre>标签不被转义?</p> </question> <answer tick="true" vote="2"> <p>要将 <pre><code>&lt;br&gt;</code></pre> 标记标记为安全,解决方案是使用<strong>自定义过滤器</strong>,如<a href="https://jinja.palletsprojects.com/en/2.11.x/api/#custom-filters" rel="nofollow noreferrer">此处</a></p>所述 <blockquote> <p>这里是一个小示例过滤器,它将文本分解为 HTML 换行符和段落,并在启用自动转义的情况下将返回值标记为安全 HTML 字符串:</p> </blockquote> <p>通过一些自定义,您可以根据您的情况调整逻辑:</p> <p>创建<pre><code>filters.py</code></pre>(使应用程序模块化)</p> <pre><code>import re from jinja2 import evalcontextfilter, Markup, escape _paragraph_re = re.compile(r&#39;(\n)&#39;) @evalcontextfilter def nl2br(eval_ctx, value): result = &#39;&#39;.join(&#39;%s&#39; % p.replace(&#39;\n&#39;, Markup(&#39;&lt;br&gt;&#39;)) for p in _paragraph_re.split(escape(value))) if eval_ctx.autoescape: result = Markup(result) return result </code></pre> <p>然后在 <pre><code>app.py</code></pre></p> <pre><code>from flask import Flask from .filters import nl2br app = Flask(__name__) [..] app.jinja_env.filters[&#39;nl2br&#39;] = nl2br </code></pre> <p>然后在你的模板中</p> <pre><code>&lt;p&gt;{{ mystring | nl2br }}&lt;/p&gt; </code></pre> </answer> <answer tick="false" vote="0"> <p>阅读@cizario的答案后,我发现以下解决方案不涉及自定义过滤器:</p> <p><pre><code>&lt;p&gt;{{mystring | replace(&#39;\n&#39;, &#39;&lt;br&gt;&#39; | safe) }}&lt;/p&gt;</code></pre></p> <p>问题强调的问题是 <pre><code>replace</code></pre> 产生不安全的字符串,随后会被转义。 通过告诉模板引擎我们的 <pre><code>&#39;&lt;br&gt;&#39;</code></pre> 字符串是安全的,我们可以避免它转义由 <pre><code>replace</code></pre> 过滤器产生的换行符。</p> </answer> </body></html>

回答 0 投票 0

使用 Kubernetes 运算符覆盖 DBT Airflow DAG JSON

创建了一个 DAG 来访问覆盖。以下是在覆盖中传递的命令。 Airflow UI 上的 JSON:{"dbt_command": ["products", "--full-refresh"]} 该公司...

回答 1 投票 0

为什么flaskform在提交但未验证时拒绝显示字段中的错误?

我刚刚学习flask。我想在网页上显示烧瓶表单字段中出现的错误,但它只是不会显示。例如,当我在未填写任何数据的情况下提交时,它不会给出...

回答 1 投票 0

如何在 Ansible 循环中迭代列表的每两个元素?

我有一个带有磁盘名称的列表变量,其数量可以是可变的 - 4、8、16 等元素,但即使如此,我也想在所有迭代中循环打印每两个磁盘。我怎样才能做到这一点? --- - 主持人...

回答 1 投票 0

Jinja 找不到模板路径

我无法让 Jinja2 读取我的模板文件。 jinja2.exceptions.TemplateNotFound:template.html 配置 Jinja2 加载模板的最简单方法 应用程序看起来大致如下: ...

回答 1 投票 0

'collections.OrderedDict object'没有属性'YYYY-MM-DD'的原因?

我还不是一个编码员,只是想看看是否有人知道为什么当我们尝试运行 Github knadh/tg-archive --build 时 Jinja2 会抛出下面的异常?仅当配置变量时才会发生

回答 1 投票 0

Ansible:如何从列表字典中提取值

我试图从字典列表中获取值,但无法获得准确的输出,这是必需的 使用安装了 ansible 2.7.5 和 jinja2 2.7.2 版本的 Linux 服务器。 下面的...

回答 2 投票 0

在 Ansible 循环中迭代列表的每两个元素

我有一个带有磁盘名称的列表变量(可以是动态的 - 4,8,16(偶数)等元素),我想在所有迭代中循环打印每两个磁盘,我该怎么做? --- - 主持人:全部 变量: 这...

回答 1 投票 0

格式化 Ansible/Jinja2 中的项目列表

是否可以使用 Ansible / Jinja2 中的格式化字符串将列表/字典列表转换为字符串列表? 我知道我可以做类似的事情: {{[“第一:%d”,“第二:%d&...

回答 4 投票 0

如何获得小写的可理解的事实

我正在收集可靠的事实。序列号有大写和小写两种形式。见下文。 5A2c32a-f1G85g-2035-0483-1fe9c129216d 我需要将该事实与

回答 1 投票 0

如何使用flask跨网页显示Flash消息?

我正在尝试输入用户在网站中的操作的闪现消息。但由于某种原因,闪现消息没有显示。这是存储库。我检查了几次端点,然后...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.