需求分析与功能实现

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))
View Code

相关文章: