Python 区分金贾2中的类型
我有一个HTML/jinja2模板,用于以表格的形式显示数据 表的数据可能以不同的方式出现,我希望模板能够使用if语句处理这两种类型。python中的type(x)函数在此语言中不起作用Python 区分金贾2中的类型,python,html,python-3.x,flask,jinja2,Python,Html,Python 3.x,Flask,Jinja2,我有一个HTML/jinja2模板,用于以表格的形式显示数据 表的数据可能以不同的方式出现,我希望模板能够使用if语句处理这两种类型。python中的type(x)函数在此语言中不起作用 字典数组(字典列表) 数组数组(列表列表) 模板的一部分: {% block page_content %} <input type="text" id="search" placeholder="Type to search"> <table id="table" class="table"
{% block page_content %}
<input type="text" id="search" placeholder="Type to search">
<table id="table" class="table">
<tr style="white-space:nowrap;">
{% for h in headers %}
{% if h is string %}
<th>{{h}}</th>
{% else %}
<th>{{h[1]}}</th>
{% endif %}
{% endfor %}
</tr>
{%if data is "TYPE CHECK HERE"}
{% for row in data %}
{% if row != {} %} #ALTERNATIVELY, COULD DO A TYPE CHECK HERE
<tr style="white-space:nowrap;{% if row['bad'] %}background-color:rgba(255, 0, 0, 0.09);{% endif %}">
{% for h in headers %}
<td style="white-space:nowrap;">{{ row[h[0]] }}</td>
{% endfor %}
</tr>
{% endif %}
{% endfor %}
{%block page\u content%}
{%h在头文件%}
{%如果h是字符串%}
{{h}
{%else%}
{{h[1]}
{%endif%}
{%endfor%}
{%如果数据为“此处类型检查”}
{数据%中的行为%1}
{%if行!={}%}#或者,可以在此处执行类型检查
{%h在头文件%}
{{row[h[0]]}
{%endfor%}
{%endif%}
{%endfor%}
{%endblock%}
TL:DR金贾2中可区分的类型是什么?如何检查变量的类型?在呈现jinja之前,最好在python端保留尽可能多的逻辑代码 因此,将python端的数据传输到标题列表,并将嵌套列表作为数据:
render_template('test.html',
headers=['name', 'age',],
rows=[{'color': 'red', 'data': ['john', 84]},
{'color': 'green', 'data':['jacob', 45]}]
html:
{标头%中的项的%1}
{{item}}
{%endfor%}
{第%行中的第%行}
{第['data']%行中的单元格为%1}
{{cell}}
{%endfor%}
{%endfor%}
在学习过程中,我也尝试过类似于您的方法,但最终我发现这种方法效果最好,因为它为您的数据提供了最大的灵活性,并且在python端操作数据通常非常简单。所以不是真正的答案,只是一般性的建议 您可以查看,这里描述了一些可比较的有效类型。例如,你可以,你可以尝试:
{% if type({'a':1,'b':2}) is mapping %}
print "Oh Yes!!"
{% else %}
print "Oh No!!!"
{% endif %}
您可以根据需要嵌套任何内容,但正确的方法是将复杂逻辑迁移到控制器
PD:此示例取自。谢谢@sean vieira
{% if type({'a':1,'b':2}) is mapping %}
print "Oh Yes!!"
{% else %}
print "Oh No!!!"
{% endif %}
my_var = []
my_var.insert(0, 'list')
my_var = '111'
{% if my_var[0] == 'list' %}
list:
{% for i in my_var[1:] %}
{{ i }}
{% endfor %}
{% else%}
str: {{ my_var }}
{% endif %}