【问题标题】:How to pass individual jinja variable in a jinja loop to python function as a parameter?如何将 jinja 循环中的单个 jinja 变量作为参数传递给 python 函数?
【发布时间】:2019-05-19 06:34:48
【问题描述】:

我想将 jinja 循环内的单个 jinja 变量作为参数传递给 python 函数。在这种情况下,我需要将 jinja 循环中的 {{ book.isbn }} 传递给 python 函数才能使用此值。

我曾尝试使用 href="{{ url_for(...) }}" 但它仅在我单击链接时触发。我需要它在每次循环运行时触发。

{% for book in books %}
   {{ book.isbn }}
{% endfor %}

我想获得 {{ book.isbn }},以便我可以处理它并根据该值输出另一个变量。我也想为书籍列表中的每个“书籍”值执行此操作,因此,我无法在其他地方手动执行此操作。

【问题讨论】:

    标签: python html jinja2


    【解决方案1】:

    我认为,如果您在渲染方法中将函数作为关键字参数传递,它应该可以解决问题。

    from jinja2 import Template
    
    template = Template("""
    {% for book in books %}
       {{ custom_function(book.isbn) }}
    {% endfor %}
    """)
    
    from collections import namedtuple
    Book = namedtuple('Book', ['name', 'isbn'])
    
    books = [
            Book('a', 1),
            Book('b', 2),
            Book('c', 3)
            ]
    
    def custom_function(isbn):
        return isbn + 1
    
    print(template.render(books=books, custom_function=custom_function))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-05
      • 2019-01-02
      • 2022-01-13
      • 2023-01-29
      • 2019-03-18
      • 1970-01-01
      相关资源
      最近更新 更多