Jinja2 与Django 模板用法差异的地方

原文链接: https://my.oschina.net/012345678/blog/296545

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

方法调用

django

{% for page in user.get_created_pages %}
    ...
{% endfor %}
jinja2

{% for page in user.get_created_pages %}
    ...
{% endfor %}

好处是可以传递变量给调用的函数

条件判断

django

{% ifequal foo "bar" %}
    ...
{% else %}
    ...
{% endifequal %}
jinja2 

{% if foo == 'bar' %}   这里的判断在django中,实际是可以的。我用的1.45   1.6 
    ...
{% else %}
    ...
{% endif %}


{% if something %}   这个在django里默认不行
    ...
{% elif otherthing %}
    ...
{% elif foothing %}
    ...
{% else %}
    ...
{% endif %}

过滤器参数

django

{{ items|join:", " }}
jinja2

{{ items|join(', ') }}   当作代码里的函数,有括号,可以任意传参数

循环

Django

{% for item in items %}
    {{ item }}
{% empty %}
    No items!
{% endfor %}
Jinja2

{% for item in items %}
    {{ item }}
{% else %}    也就换换写法而已
    No items!
{% endfor %}


还有就是,jinja2 里取得循环第一次叫loop.first   django里是forloop.first

Cycle

Django

{% for user in users %}
    {{ user }}
{% endfor %}
Jinja2

{% for user in users %}
    {{ user }}
{% endfor %}

然后就是jinja2没有这种语法  {% cycle ... as variable %}




转载于:https://my.oschina.net/012345678/blog/296545

你可能感兴趣的:(Jinja2 与Django 模板用法差异的地方)