一、配置文件的思路
通过列表保存字典,字典中以键值对的形式保存,我们要用到的内容
-
q用来查询数据库内容,其中value存的是数据库的字段方便以后调用。
-
title 用保存table的标题
-
display 用来控制字段师是否显示
table_config = [
{
'q':'id',
'title':'ID',
'display':False,
},
{
'q':'cabinet_num',
'title':'机柜号',
'display':True,
'text': {'content': '{n}-{m}', 'kwargs': {'n': "机柜", 'm': "@cabinet_num"}},
'attrs':{}
},
{
'q':'cabinet_order',
'title':'机柜位置',
'display':True,
'text': {'content':'{m}','kwargs':{'m':"@cabinet_order"}},
'attrs': {}
},
{
'q': 'device_type_id',
'title': '资产类型',
'display': True,
'text': {'content': '{m}', 'kwargs': {'m': "@@device_type_choices"}},
'attrs':{'edit-enable':'true','edit-type':'select'}
},
{
'q': None,
'title': '操作',
'display': True,
'text': {'content': '<a href="/assetdetail-{m}.html">{n}</a>', 'kwargs': {'n': "查看详情", 'm': "@id"}},
'attrs': {}
},
]
-
通过循环字典将q中的数据库字段,进行保存方便以后直接调用
#如果是none就不保存
for i in table_config:
if not i['q']:
continue
q_list.append(i['q'])
from repository import models
data_list = models.Asset.objects.values(*q_list)
data_list = list(data_list)
-
ajax传递的时候用的是字典一定注意
result = {
'table_config':table_config,
'data_list':data_list,
#用来保存一个内存的列表储存形式
'global_list':{
'device_type_choices': models.Asset.device_type_choices,
'device_status_choices':models.Asset.device_status_choices
}
}
二、整体思路
-
先页面访问一个框架连接
from django.views import View
class AssetView(View):
def get(self,request):
return render(request,"asset.html")
-
通过ajax 访问table生成的连接
class AssetJsonView(View):
def get(self,request):
#创建一个不配置文件
#q用来查询数据库内容,进行操作是用None做不存在判断
#title 用来生成表格表头
#display 用来判断数据是否显示,一般自增id是隐藏的
#text 页面显示文本{'concnet':'{n}','kwargs':{'n':"机柜"}} 吧n的地方替换成机柜{n}.format({'n',wang})
table_config = [
{
'q':'id',
'title':'ID',
'display':False,
},
{
'q':'cabinet_num',
'title':'机柜号',
'display':True,
'text': {'content': '{n}-{m}', 'kwargs': {'n': "机柜", 'm': "@cabinet_num"}},
'attrs':{}
},
{
'q':'cabinet_order',
'title':'机柜位置',
'display':True,
'text': {'content':'{m}','kwargs':{'m':"@cabinet_order"}},
'attrs': {}
},
{
'q': 'device_type_id',
'title': '资产类型',
'display': True,
'text': {'content': '{m}', 'kwargs': {'m': "@@device_type_choices"}},
'attrs':{'edit-enable':'true','edit-type':'select'}
},
{
'q': None,
'title': '操作',
'display': True,
'text': {'content': '<a href="/assetdetail-{m}.html">{n}</a>', 'kwargs': {'n': "查看详情", 'm': "@id"}},
'attrs': {}
},
]
q_list = []
#如果是none就不保存
for i in table_config:
if not i['q']:
continue
q_list.append(i['q'])
from repository import models
data_list = models.Asset.objects.values(*q_list)
data_list = list(data_list)
#json传递的时候用的是字典一定注意
models.Asset.device_type_choices
result = {
'table_config':table_config,
'data_list':data_list,
#用来保存一个内存的列表储存形式
'global_list':{
'device_type_choices': models.Asset.device_type_choices,
'device_status_choices':models.Asset.device_status_choices
}
}
return HttpResponse(json.dumps(result))