Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 区分金贾2中的类型_Python_Html_Python 3.x_Flask_Jinja2 - Fatal编程技术网

Python 区分金贾2中的类型

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"

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

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

  • 字典数组(字典列表)

  • 数组数组(列表列表)

  • 模板的一部分:

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

  • 我的变量是列表
  • 我的变量是str
  • 在金玉2中识别
  • 可能会有帮助!
    {% 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 %}