标签: jinja2

在Jinja2中将"None"输出抑制为字符串

"None"当值为时,我如何说服Jinja2不打印None

我在字典中有很多条目,我想在一个循环中输出所有内容,而不是针对不同的关键字有特殊情况.如果我的值为None(NoneType不是字符串),则将字符串"None"插入到模板渲染结果中.

尝试使用{{ value or '' }}效果很好地抑制它, 因为它也会替换数值零.

在将字典传递给Jinja2进行渲染之前,是否需要过滤字典?

python jinja2

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

如何使用浮点过滤器在小数点后只显示两位数?

我使用Flask/Jinja2模板使用| float过滤器显示数字.

这是我的代码

{% set proc_err = nb_err|length / sum * 100 %}
({{proc_err|float}}%)
Run Code Online (Sandbox Code Playgroud)

输出有点尴尬:

17/189 (8.99470899471%)
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种方法,使点后的地方限制为数字,例如2.

期望的输出:

17/189 (8.99%)
Run Code Online (Sandbox Code Playgroud)

wsgi jinja2 flask

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

Jinja2内联评论

如何在Jinja2参数列表声明中添加注释?

我尝试的所有内容都会出错: jinja2.exceptions.TemplateSyntaxError:unexpected char u'#'

{{ Switch('var',
    [('1', 'foo'),    #  comment 1
     ('2', 'bar'),    ## comment 2
     ('3', 'rum'),    {# comment 3 #}
     ]) }}


{% macro Switch(var, caselist) %}
    {% for case, action in caselist%}
        CMP  {{var}} {{case}} 
        JNE  {{LABEL}}
        {{action}}
        JMP  {{LABELF}}
{{LABEL}}:  NOP
    {%- endfor %}
{{LABELF}}: NOP
{%- endmacro -%}
Run Code Online (Sandbox Code Playgroud)

python macros comments jinja2

48
推荐指数
3
解决办法
5万
查看次数

Mako或Jinja2?

我没有找到jinja2和Mako的良好比较.你会用什么来完成什么任务?

我个人很满意mako(在一个pylons网络应用程序环境中),但我很想知道jinja2是否有一些很好的功能/改进mako不? - 或者可能是缺点? -

python templates template-engine mako jinja2

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

如何在ansible中测试jinja2模板?

有时我需要测试一些我在ansible角色中使用的jinja2模板.这样做最简单的方法是什么?

例如,我有一个模板(test.j2):

{% if users is defined and users %}
{% for user in users %}{{ user }}
{% endfor %}
{% endif %}
Run Code Online (Sandbox Code Playgroud)

和vars(在group_vars/all中):

---
users:
  - Mike
  - Smith
  - Klara
  - Alex
Run Code Online (Sandbox Code Playgroud)

jinja2 ansible ansible-playbook ansible-template

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

如何直接从文件系统加载jinja模板

我对python缺乏经验,所以当我在pocoo.org上阅读jinja API文档时,我误入歧途.它写道:

配置Jinja2为应用程序加载模板的最简单方法大致如下:
from jinja2 import Environment, PackageLoader
env = Environment(loader=PackageLoader('yourapplication', 'templates'))
Run Code Online (Sandbox Code Playgroud)
这将创建一个具有默认设置的模板环境和一个在yourapplication python包中的templates文件夹中查找模板的加载器.

事实证明,这并不是那么简单,因为你必须在其中创建/安装包含模板的python包,这会带来许多不必要的复杂性,特别是如果你无意分发你的代码.您可以在此处此处参考有关此主题的SO问题,但答案含糊不清且不满意.

显然,天真的新手想要做的只是直接从文件系统加载模板,而不是作为包中的资源. 这是怎么做到的?

python templates jinja2

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

如何编写多行Jinja语句

我在Jinja模板中有一个if语句,出于可读性的原因,我想用多语言编写它.考虑这个案子

{% if (foo == 'foo' or bar == 'bar') and (fooo == 'fooo' or baar == 'baar') etc.. %}
Run Code Online (Sandbox Code Playgroud)

jinja2

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

检查Jinja2模板中的Python dict中是否存在密钥

我有一个python字典:

settings = {
   "foo" : "baz",
   "hello" : "world"
}
Run Code Online (Sandbox Code Playgroud)

settings然后,此变量可在Jinja2模板中使用.

我想检查模板中dict中是否myProperty存在密钥settings,如果是,请执行以下操作:

{% if settings.hasKey(myProperty) %}
   takeSomeAction();
{% endif %}
Run Code Online (Sandbox Code Playgroud)

hasKey我可以使用的相当于什么?

python django jinja2

44
推荐指数
3
解决办法
5万
查看次数

Jinja中的字符串连接

我只想循环遍历现有列表并从中创建逗号分隔的字符串.
像这样的东西:my_string = 'stuff, stuff, stuff, stuff'

我已经知道了loop.last,我只需要知道如何使我的代码中的第三行在WORK下面.

{% set my_string = '' %}
{% for stuff in stuffs %}
{% set my_string = my_string + stuff + ', '%}
{% endfor%}
Run Code Online (Sandbox Code Playgroud)

string jinja2

43
推荐指数
4
解决办法
10万
查看次数

如何在Jinja2中将字符串转换为大写/小写?

我正在尝试将我正在使用的Jinja模板中的字符串转换为大写字母.

模板文档中,我读到:

upper(s)
    Convert a value to uppercase.
Run Code Online (Sandbox Code Playgroud)

所以我写了这段代码:

{% if student.departament == "Academy" %}
    Academy
{% elif  upper(student.department) != "MATHS DEPARTMENT" %}
    Maths department
{% endif %}
Run Code Online (Sandbox Code Playgroud)

但是我收到了这个错误:

UndefinedError: 'upper' is undefined
Run Code Online (Sandbox Code Playgroud)

那么,如何在Jinja2中将字符串转换为大写?

python jinja2

43
推荐指数
3
解决办法
5万
查看次数