Python 在循环中修改的变量不会在循环外持久存在 {%set title\u org=nav\u item.title.split(“”%} {%set title_mod=”“%} {title_org%]中的i的% {%if loop.index>3%} {%set title\u mod=title\u mod+''+i%} {%endif%} {%endfor%}

Python 在循环中修改的变量不会在循环外持久存在 {%set title\u org=nav\u item.title.split(“”%} {%set title_mod=”“%} {title_org%]中的i的% {%if loop.index>3%} {%set title\u mod=title\u mod+''+i%} {%endif%} {%endfor%},python,web,jinja2,mkdocs,Python,Web,Jinja2,Mkdocs,{{title\u mod}}是一个空字符串,尽管在循环中已连接。如何在for循环之外检索更新的{{title\u mod}}?您应该像 {% set title_org = nav_item.title.split(" ") %} {% set title_mod = "" %} {% for i in title_org %} {% if loop.index > 3 %} {% set title_mod = title_mod + ' ' + i %} {% end

{{title\u mod}}
是一个空字符串,尽管在循环中已连接。如何在for循环之外检索更新的
{{title\u mod}}

您应该像

{% set title_org = nav_item.title.split(" ") %}
{% set title_mod = "" %}
{% for i in title_org %}
  {% if loop.index > 3 %}
    {% set title_mod = title_mod + ' ' + i %}
  {% endif %}
{% endfor %}
<a href="{{ nav_item.url }}" id="{{ id }}">{{ title_mod }}</a>

{%set title\u data={'org':nav\u item.title.split(“”,'mod':“”}%} {title_data.org%} {%if loop.index>3%} {{title_data.update({'mod':title_data.mod+''+i}}} {%endif%} {%endfor%}


看起来像是一个

我不确定为什么首先要把它放在字典里。然而,我在您的第一行中将
'mod'=
更改为
'mod':
。然后返回此错误,
jinja2.exceptions.TemplateSyntaxError:应为标记“语句块结束”,得到“.”
。错误位于
{%set title\u data.update({'mod':title\u data.mod+'+i})%}
。我不确定是哪一个,我找不到
update()
的任何文档:(.我不确定为什么首先需要将其放在字典中这是Jinja处理全局/本地上下文变量的方式-只是一种解决方法。请立即尝试,因为我已经包含了
set
,如果没有
set
,它将返回另一个错误,
jinja2.exceptions.TemplateSyntaxError:遇到未知标记“title”\u data'.Jinja正在查找以下标记:“elif”或“else”或“endif”。需要关闭的最里面的块是“if”。
。文档实际在哪里?我在Jinja2网站上找不到这个。看起来我是移动的,无法尽快测试它,这很容易出错。缺少
do
关键字now,希望它现在能工作:P
<p style="display:none;">
{% set title_data = {'org': nav_item.title.split(" "), 'mod' : ""} %}
{% for i in title_data.org %}
  {% if loop.index > 3 %}
    {{ title_data.update({'mod' : title_data.mod + ' ' + i}) }}
  {% endif %}
{% endfor %}
</p>
<a href="{{ nav_item.url }}" id="{{ id }}">{{ title_data.mod }}</a>