需求分析与功能实现
1、界面展示数据定制化的,通过在服务端views.py中配置 table_config 来自定义要展示的数据
2、采用jQuery ajax 异步数据请求、处理、展示
3、请求数据的定制化展示,增加删除、编辑等操作项
4、jQuery ajax 封装成通用的 js 框架,展示不同数据传入url 参数即可
5、有些数据只查询不展示(id),有些数据例如device_type_id(设备类型id) 不展示,只展示其对应的设备类型。
views.py 服务数据展示
class JsonCustomEncoder(json.JSONEncoder): def default(self, value): if isinstance(value, datetime): return value.strftime('%Y-%m-%d %H:%M:%S') elif isinstance(value, date): return value.strftime('%Y-%m-%d') else: return json.JSONEncoder.default(self, value) # Create your views here. def curd(request): # v = models.Server.objects.all() return render(request, 'curd.html') def curd_json(request): table_config = [ { 'q': 'id', 'title': 'ID', 'display': False, 'text': { 'tpl': "{n1}", 'kwargs': {'n1': '@id'} } }, { 'q': 'hostname', 'title': '主机名', 'display': True, 'text': { 'tpl': "{n1}-{n2}", 'kwargs': {'n1': '@hostname', 'n2': '@id'} } }, # 页面显示:标题:操作;删除,编辑:a标签 { 'q': None, 'title': '操作', 'display': True, 'text': { 'tpl': "<a href='/del?nid={nid}'>删除</a>", 'kwargs': {'nid': '@id'} } }, ] # 普通值:原值存放即可 # @值 : 根据id,根据获取当前行对应数据 values_list = [] for row in table_config: if not row['q']: continue values_list.append(row['q']) server_list = models.Server.objects.values(*values_list) ret = { 'server_list': list(server_list), 'table_config': table_config } return HttpResponse(json.dumps(ret, cls=JsonCustomEncoder))