如何从 for 循环内部设置一个可以从 for 循环外部访问的变量 [Jinja]
How to set a variable from inside a for loop that can be accessed from outside the for loop [Jinja]
当用户点击 link 时,我希望 Jinja 设置一个名为 {{ contact_clicked }}
的变量,它等于 {{ contact }}
.
我可以<a href="/?{% contact_clicked = contact %}">.....</a>
。但是,该变量在 for 循环之外是不可访问的。
我尝试创建一个列表,然后将一个变量附加到列表中,然后访问列表中的第一个变量。但是,当页面重新加载(或任何其他时间)时,列表不会擦除,因此变量将永远设置。
编辑 1:
我的 for 循环看起来像这样:
{% set contact_clicked = "" %}
{% for contact in contact_list %}
{% if contact in fake_list %}
<h4 style="color: rgb(200,100,100)"> {{ contact }} NO SUCH ACCOUNT </h4>
{% else %}
<a href="/?{% contact_clicked = contact %}"> <h4 style="color: rgb(200,200,200)"> {{ contact }} </h4> </a>
{% endif %}
{% endfor %}
我说的是 Jinja2 for 循环,不是 Python for 循环。
只需在for循环之前声明变量即可:
randomStuff = int(0)
for i in range(0, 100):
randomStuff += 1
print randomStuff
希望对您有所帮助,
贾森.
已解决继续阅读以了解如何...
为了设置变量,我告诉 Jinja 将我引导至 /contact_msg/{{ contact }}。假设我单击了一个名为 'bob' 的联系人。我会被定向到 /contact_msg/bob。代码如下
{% for contact in contact_list %}
{% if contact in fake_list %}
<h4 style="color: rgb(200,100,100)"> {{ contact }} NO SUCH ACCOUNT </h4>
{% else %}
<a href="/contact_msg/{{ contact }}"> <h4 style="color: rgb(200,200,200)"> {{ contact }} </h4> </a>
{% endif %}
{% endfor %}
然后,在执行此操作时,用户会被定向到
@app.route('contact_msg/<contact>')
def contact_msg_page( contact ):
session['contact_clicked'] = contact
return redirect( url_for( 'home' ) )
在烧瓶中。因为 contact 是 def contact_msg_page
中的参数,所以 Python 中名为 contact 的局部变量被设置为 {{ contact }}
(用户单击的 link)。然后,我将名为 contact_clicked
或 session['contact_clicked']
的会话变量设置为等于 Python 变量 contact
。现在我已经完成了,我可以访问会话变量 contact_clicked
并用它做所有我想做的事情(例如,当用户点击他们的联系人列表中的联系人时,它选择他们有消息由点击它们的用户发送给它们)<-- 太啰嗦了。
我希望这对遇到与我类似问题的任何人有所帮助。如果有人想问任何问题,请问。我很乐意帮助你。
当用户点击 link 时,我希望 Jinja 设置一个名为 {{ contact_clicked }}
的变量,它等于 {{ contact }}
.
我可以<a href="/?{% contact_clicked = contact %}">.....</a>
。但是,该变量在 for 循环之外是不可访问的。
我尝试创建一个列表,然后将一个变量附加到列表中,然后访问列表中的第一个变量。但是,当页面重新加载(或任何其他时间)时,列表不会擦除,因此变量将永远设置。
编辑 1:
我的 for 循环看起来像这样:
{% set contact_clicked = "" %}
{% for contact in contact_list %}
{% if contact in fake_list %}
<h4 style="color: rgb(200,100,100)"> {{ contact }} NO SUCH ACCOUNT </h4>
{% else %}
<a href="/?{% contact_clicked = contact %}"> <h4 style="color: rgb(200,200,200)"> {{ contact }} </h4> </a>
{% endif %}
{% endfor %}
我说的是 Jinja2 for 循环,不是 Python for 循环。
只需在for循环之前声明变量即可:
randomStuff = int(0)
for i in range(0, 100):
randomStuff += 1
print randomStuff
希望对您有所帮助,
贾森.
已解决继续阅读以了解如何...
为了设置变量,我告诉 Jinja 将我引导至 /contact_msg/{{ contact }}。假设我单击了一个名为 'bob' 的联系人。我会被定向到 /contact_msg/bob。代码如下
{% for contact in contact_list %}
{% if contact in fake_list %}
<h4 style="color: rgb(200,100,100)"> {{ contact }} NO SUCH ACCOUNT </h4>
{% else %}
<a href="/contact_msg/{{ contact }}"> <h4 style="color: rgb(200,200,200)"> {{ contact }} </h4> </a>
{% endif %}
{% endfor %}
然后,在执行此操作时,用户会被定向到
@app.route('contact_msg/<contact>')
def contact_msg_page( contact ):
session['contact_clicked'] = contact
return redirect( url_for( 'home' ) )
在烧瓶中。因为 contact 是 def contact_msg_page
中的参数,所以 Python 中名为 contact 的局部变量被设置为 {{ contact }}
(用户单击的 link)。然后,我将名为 contact_clicked
或 session['contact_clicked']
的会话变量设置为等于 Python 变量 contact
。现在我已经完成了,我可以访问会话变量 contact_clicked
并用它做所有我想做的事情(例如,当用户点击他们的联系人列表中的联系人时,它选择他们有消息由点击它们的用户发送给它们)<-- 太啰嗦了。
我希望这对遇到与我类似问题的任何人有所帮助。如果有人想问任何问题,请问。我很乐意帮助你。