区分金贾二号的类型

2024-10-06 16:16:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个HTML/jinja2模板,用于以表的形式显示数据。在

表的数据可能以不同的方式提供,我希望模板能够使用if语句处理这两种类型。python中的type(x)函数在这种语言中不起作用。在

  1. 字典数组(字典列表)

  2. 数组数组(列表列表)

模板的一部分:

{% 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 %}

在 {%endblock%}

TL:DR金贾二号有哪些可区分的类型?如何检查变量的类型?在


Tags: in模板类型列表forifstyletable
3条回答

你可以看看this link,那里描述了一些有效的类型进行比较。例如,您可以check is a dict,您可以尝试:

{% if type({'a':1,'b':2}) is mapping %}
     print "Oh Yes!!"
{% else %}
    print "Oh No!!!"
{% endif %}

您可以嵌套任何需要的内容,但正确的方法是将复杂的逻辑迁移到控制器。在

PD:这个例子取自here。感谢@sean vieira

  1. 我的名字是列表
my_var = []
my_var.insert(0, 'list')
  1. 我的名字是str
^{pr2}$
  1. 在金贾二区辨别
{% if my_var[0] == 'list' %}
list: 
{% for i in my_var[1:] %}
{{ i }}
{% endfor %}

{% else%}
str: {{ my_var }}
{% endif %}

在呈现jinja之前,最好在python端保留尽可能多的逻辑代码。在

将数据传输到python和数据的嵌套列表中,以便:

render_template('test.html', 
                headers=['name', 'age',], 
                rows=[{'color': 'red', 'data': ['john', 84]},
                      {'color': 'green', 'data':['jacob', 45]}]

html格式:

^{pr2}$

在学习过程中,我也尝试过类似于您的方法,但最终我发现这种方法效果最好,因为它为您的数据提供了最大的灵活性,而且在python端操作数据通常非常简单。所以不是一个真正的答案,只是一般的建议。在

相关问题 更多 >