1. 程式人生 > 實用技巧 >4-crm專案-kingadmin,列表頁---表頭和資料

4-crm專案-kingadmin,列表頁---表頭和資料

展示客戶列表頁面--------表頭

通過自定義的admin_class類,迴圈出list_display所有的列
{#kingadmin/templates/kingadmin/table_obj_list.html#}

{% extends 'kingadmin/index.html' %}

{% block right-content-container %}
<h2 class="page-header">app</h2>

<div>
        {{ querysets }}
        <table class="table table-striped">
            <thead>
                <tr>
                    {% for column in admin_class.list_display %}
                        <th>{{ column }}</th>
                    {% endfor %}

                </tr>
            </thead>
            <tbody>

            </tbody>
        </table>
</div>

{% endblock %}

展示客戶列表頁面--------資料

# kingadmin/templatetags/kingadmin_tags.py

from django.template import Library
from django.utils.safestring import mark_safe

register = Library()

@register.simple_tag
def build_table_row(obj,admin_class):
    '''生成一條記錄的html element'''

    ele = ''
    for column_name in admin_class.list_display:
        #通過反射獲取列的資料,兩個引數,一個是object,一個是列名
        column_data = getattr(obj,column_name)
        td_ele = "<td>%s</td>"%column_data
        ele += td_ele

    return mark_safe(ele)

對應的html

{#kingadmin/templates/kingadmin/table_obj_list.html#}

{% extends 'kingadmin/index.html' %}
{% load kingadmin_tags %}

{% block right-content-container %}
<h2 class="page-header">app</h2>

<div>
        {{ querysets }}  ---->這是返回的資料集,有幾條記錄就有幾個,
        <table class="table table-striped">
            <thead>
                <tr>
                    {% for column in admin_class.list_display %}
                        <th>{{ column }}</th>
                    {% endfor %}

                </tr>
            </thead>
            <tbody>
                {% for obj in querysets %}   ----->obj就是一個數據,
                    <tr>{% build_table_row obj admin_class %}</tr>
                {% endfor %}
                
            </tbody>
        </table>
</div>

{% endblock %}