在jinja2中,我想生成枚举事物的字符串,在此示例中为不同的结果。我有以下模板文件。请注意,其中“ Fruit_str未设置”行是出于调试目的。
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
{% set fruit_str = "Fruit_str not set" %}
{% for fruit in fruits %}
{% if loop.first %}
{% set fruit_str = fruit %}
{% elif loop.last %}
{% set fruit_str = fruit_str + " and " + fruit + "." %}
{% else %}
{% set fruit_str = fruit_str + ", " + fruit %}
{% endif %}
{% endfor %}
You have {{fruit_str}}
</body>
</html>
获取此JSON作为输入
{ "fruits" : ["apples", "oranges", "bananas", "pears"] }
预期输出为
You have apples, oranges, bananas and pears.
但是,实际输出是
You have Fruit_str not set
这表明循环根本没有运行。 ´我已经阅读了有关循环(http://jinja.pocoo.org/docs/2.10/templates/)的jinja2文档,但是在此示例中找不到错误所在。怎么了?
答案 0 :(得分:1)
在Jinja2中,"createdAt"=> 1537003313,
循环具有自己的名称空间;因此,您在循环内设置的变量是该循环的局部变量,一旦在循环外,同名变量将恢复为外部范围之一。
您可以使用(int)$model->createdAt;
对象来解决此问题:
Transformations.switchMap(signInResponseMutableLiveData){signInResponse ->
val mutableLiveData = MutableLiveData<Any>()
if (signInResponse is FirebaseUser) {
val firebaseUserEmail = signInResponse.email
homeFragmentUIDataLiveData.value = HomeFragmentUIData(firebaseUserEmail ?: "")
} else if (signInResponse is String) {
loginErrorEventLiveData.value = signInResponse
}
mutableLiveData
}
有关详细信息,请参见namespace
的文档。