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 %}
展示客户列表页面--------数据
第一步:tag
# 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 %}
第三步:views
要通过views,把内容传递到前端,
技术改变命运