4-crm專案-kingadmin,列表頁---表頭和資料
阿新 • • 發佈:2020-08-10
展示客戶列表頁面--------表頭
通過自定義的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 %}