首页 > 解决方案 > Python 代码有效,但翻译成 Jinja 时无效?

问题描述

当有元素和没有元素时,我试图渲染数组中的所有元素。当该位置没有元素时,我想显示该位置没有练习(元素)。这需要一小段代码,它在 python 中有效,但在 Jinja 中无效。除非我错过了两种语言之间的区别,否则这对我来说没有意义。

我首先在 python 中编写代码的原因是因为我已经尝试了一段时间来让它工作。我想如果我写了python,我可以翻译它,但我猜不是?

工作python代码:

dailyExercise = [('Exercise 1', 1), ('Exercise 2', 3)]
for x in range(dailyExercise[-1][-1]):
    print(x+1)
    isExercise = False
    for exercise in dailyExercise:
        if exercise[-1] == x+1:
            print(exercise[0])
            isExercise = True
            break;
    if isExercise == False:
        print("no exercise")

不工作的神社代码:

{% for x in range(dailyExercise[-1][-1]) %}
    <p>Day {{x+1}}</p>
    {%set isExercise = False%}
    {% for exercise in dailyExercise%}
        {% if exercise[-1] == x+1 %}
            {%set isExercise = True%}
            <p>{{exercise[0]}}</p>
        {% endif %}
    {% endfor %}
    {% if isExercise == False%}
    <p>no exercise</p>
    {% endif %}
{% endfor %}

Python 打印:

1                                                                      
Exercise 2                                                             
2                                                                      
no exercise                                                            
3                                                                      
Single leg balance abd/adduction 

Jinja 渲染了这个:

Exercise 2
no exercise
Day 2
no exercise
Day 3
Single leg balance abd/adduction
no exercise

标签: pythonhtmlflaskjinja2

解决方案


一般来说,虽然可以在 Jinja 中创建复杂的分支逻辑,但它通常是错误的地方。除了{% %}.

我在这里的第一种方法是在 Python 中处理数组,创建一个新的数组,例如None包含缺少的练习。然后在 Jinja 中简单地循环遍历新数组,检查 None并呈现适当的 HTML。如果需要访问当前项的索引,可以使用loop.indexloop.index0变量。


推荐阅读