• <small id='TLgOx'></small><noframes id='TLgOx'>

    <legend id='TLgOx'><style id='TLgOx'><dir id='TLgOx'><q id='TLgOx'></q></dir></style></legend>

    <tfoot id='TLgOx'></tfoot>

    1. <i id='TLgOx'><tr id='TLgOx'><dt id='TLgOx'><q id='TLgOx'><span id='TLgOx'><b id='TLgOx'><form id='TLgOx'><ins id='TLgOx'></ins><ul id='TLgOx'></ul><sub id='TLgOx'></sub></form><legend id='TLgOx'></legend><bdo id='TLgOx'><pre id='TLgOx'><center id='TLgOx'></center></pre></bdo></b><th id='TLgOx'></th></span></q></dt></tr></i><div id='TLgOx'><tfoot id='TLgOx'></tfoot><dl id='TLgOx'><fieldset id='TLgOx'></fieldset></dl></div>
      • <bdo id='TLgOx'></bdo><ul id='TLgOx'></ul>
      1. 对于挡路赋值中的循环?

        For loop inside block assignment?(对于挡路赋值中的循环?)

            <bdo id='33iab'></bdo><ul id='33iab'></ul>
            <tfoot id='33iab'></tfoot>
            1. <small id='33iab'></small><noframes id='33iab'>

                • <i id='33iab'><tr id='33iab'><dt id='33iab'><q id='33iab'><span id='33iab'><b id='33iab'><form id='33iab'><ins id='33iab'></ins><ul id='33iab'></ul><sub id='33iab'></sub></form><legend id='33iab'></legend><bdo id='33iab'><pre id='33iab'><center id='33iab'></center></pre></bdo></b><th id='33iab'></th></span></q></dt></tr></i><div id='33iab'><tfoot id='33iab'></tfoot><dl id='33iab'><fieldset id='33iab'></fieldset></dl></div>
                  <legend id='33iab'><style id='33iab'><dir id='33iab'><q id='33iab'></q></dir></style></legend>
                    <tbody id='33iab'></tbody>
                  本文介绍了对于挡路赋值中的循环?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  这里是一个初级循环,在赋值挡路之外编译得很好:

                  {% for item in items %}
                    <p>{{item}}</p>
                  {% endfor %}
                  

                  但当我将循环放在assignment block中时,如

                  {% set stuff %}
                    {% for item in items %}
                      <p>{{item}}</p>
                    {% endfor %}
                  {% endset %}
                  

                  我收到AssertionError: Tried to resolve a name to a reference that was unknown to the frame ('item')

                  这个问题的动机是我使用宏来避免代码重复。例如,我有许多具有不同字段的div。其中一个div包含给用户的消息。在一种(但只有一种)情况下,我希望在此div中包含<ul>,因此在将生成的html作为参数传递给宏之前,我希望循环遍历列表中的元素,将每个元素包装在<li>标记中。因此我提出这个问题。

                  是否可以在赋值挡路内使用for循环?或者有没有更好的方法来实现同样的目标?

                  推荐答案

                  基于AssertionError: Tried to resolve a name to a reference that was unknown to the frame此问题仅在Jinja2版本3.x中存在。旧版本2.x工作正常。

                  此时需要先设置变量,然后才能在挡路中使用。也许以后他们会修好它。

                  {% set item = None %}
                  
                  {% set stuff %}
                    {% for item in items %}
                      <p>{{item}}</p>
                    {% endfor %}
                  {% endset %}
                  
                  {{ stuff }}
                  

                  但是set对我来说有一个很大的缺点:它不能获取参数,并且只能与items一起使用。
                  如果我设置{% set items = other_items %}

                  ,它就不能工作

                  我宁愿将代码放在macro中使用stuff(main_items)stuff(other_items)

                  {% macro stuff(items) %}
                    {% for item in items %}
                      <p>{{item}}</p>
                    {% endfor %}
                  {% endmacro %}
                  
                  {{ stuff(main_items) }}
                  
                  {{ stuff(other_items) }}
                  

                  最小工作代码:

                  from flask import Flask, render_template_string
                  
                  app = Flask(__name__)
                  
                  @app.route('/')
                  def index():
                      return render_template_string('''
                  <h1>SET</h1>
                  
                  {% set item = None %}
                  
                  {% set stuff_set %}
                    {% for item in items %}
                      <p>{{item}}</p>
                    {% endfor %}
                  {% endset %}
                  
                  {{ stuff_set }}
                  
                  <h1>MACRO</h1>
                  
                  {% macro stuff_macro(items) %}
                    {% for item in items %}
                      <p>{{item}}</p>
                    {% endfor %}
                  {% endmacro %}
                  
                  {{ stuff_macro(main_items) }}
                  {{ stuff_macro(other_items) }}
                  ''', items=['A', 'B', 'C'], main_items=[1,2,3], other_items=[4,5,6])
                  
                  if __name__ == '__main__':
                      #app.debug = True 
                      app.run()
                  

                  这篇关于对于挡路赋值中的循环?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  groupby multiple coords along a single dimension in xarray(在xarray中按单个维度的多个坐标分组)
                  Group by and Sum in Pandas without losing columns(Pandas中的GROUP BY AND SUM不丢失列)
                  Group by + New Column + Grab value former row based on conditionals(GROUP BY+新列+基于条件的前一行抓取值)
                  Groupby and interpolate in Pandas(PANDA中的Groupby算法和插值算法)
                  Pandas - Group Rows based on a column and replace NaN with non-null values(PANAS-基于列对行进行分组,并将NaN替换为非空值)
                  Grouping pandas DataFrame by 10 minute intervals(按10分钟间隔对 pandas 数据帧进行分组)
                    <bdo id='w9Ihe'></bdo><ul id='w9Ihe'></ul>
                    <tfoot id='w9Ihe'></tfoot>

                    <small id='w9Ihe'></small><noframes id='w9Ihe'>

                          <i id='w9Ihe'><tr id='w9Ihe'><dt id='w9Ihe'><q id='w9Ihe'><span id='w9Ihe'><b id='w9Ihe'><form id='w9Ihe'><ins id='w9Ihe'></ins><ul id='w9Ihe'></ul><sub id='w9Ihe'></sub></form><legend id='w9Ihe'></legend><bdo id='w9Ihe'><pre id='w9Ihe'><center id='w9Ihe'></center></pre></bdo></b><th id='w9Ihe'></th></span></q></dt></tr></i><div id='w9Ihe'><tfoot id='w9Ihe'></tfoot><dl id='w9Ihe'><fieldset id='w9Ihe'></fieldset></dl></div>
                            <tbody id='w9Ihe'></tbody>
                          <legend id='w9Ihe'><style id='w9Ihe'><dir id='w9Ihe'><q id='w9Ihe'></q></dir></style></legend>