如何在for循环外访问jinja2变量?

时间:2017-07-05 04:11:45

标签: python python-3.x flask jinja2

我尝试使用for循环来为每天添加一些数字 我想访问for循环之外的变量我不知道如何去做这个我正在使用python的烧瓶框架,只是来自weppy哪里这不是一个问题是否有一种方法使其工作方式相同在烧瓶里?

这是一些简单的代码

GET https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=twitterapi&count=2

项目[10]收集的数字是美元价值 如果我在结束之前放置$tweets = wp_remote_get("https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=$username"); 它会显示每个值,因为它被加起来这不是我想要的

修改: 如果它有帮助每日是一个8元组的列表

2 个答案:

答案 0 :(得分:1)

一个解决方案(可能是"最简单的")将更改您的Python脚本以传入名为newtotal的变量,该变量只是daily列表的长度!

或者,您可以使用length filter

{{things|length}}

在这种情况下,您的代码可能如下所示:

{% set newtotal = 0 %}
{% for item in daily: %}
    {% set newtotal = newtotal + item[10]|float %}
{% endfor %}

<div class="bottom">
    <span>Total: {{daily|length}}</span>
</div>

希望它有所帮助!

其他来源:

jinja2: get lengths of list

How do I access Jinja2 for loop variables outside the loop?

修改

抱歉,我误解了这个问题!

您可以改为使用sum filter{{ list | sum() }})。

所以你的代码看起来像:

{% set newtotal = 0 %}
{% for item in daily: %}
    {% set newtotal = newtotal + item[10]|float %}
{% endfor %}

<div class="bottom">
    <span>Total: {{ daily | sum() }}</span>
</div>

新来源:

Documentation Sum elements of the list in Jinja 2

答案 1 :(得分:0)

请记住,无法在块或循环内设置变量并使变量显示在其外部。 从版本2.10开始,可以使用命名空间对象来处理此问题,该命名空间对象允许在范围内传播更改。

这是您使用命名空间的代码:

{% set ns = namespace (newtotal = 0) %}
{% for item in daily: %}
    {% set ns.newtotal = ns.newtotal + item[10]|float %}

{% endfor %}

<div class="bottom">
    <span>Total: {{ ns.newtotal }}</span>
</div>