十四.在页面上增加查询功能

本章介绍如何在Django项目中添加搜索功能,通过搜索筛选表格内容。已对node, line, device三元素设置搜索框,修改views.py的list函数,并更新相关模板(Node_list.html, Line_list.html, Device_list.html),确保搜索结果在分页和翻页时保持一致。" 100524781,8595580,Python dataframe列字符串日期转日期格式方法,"['Python', '数据分析', 'pandas', '日期处理']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



在此章中,我们建立一个搜索功能,可以通过搜索来对表格进行筛选。

 

由于之前,我们在res_list.html中预留了search这个block,因此,我们只需要在具体页面中来填充完这个search block就可以了。随后,在views.pylist函数中,完善search功能。

 

对于三个元素,node,line,device,我们都进行相应的搜索框设置。

 

1.在views.py中,增加搜索功能。在此,对原先的list函数进行更改,更改如下:

#显示各列表信息
def lists(request, table):
    #从根据不同的请求,来获取相应的数据,并跳转至相应页面
    if table == 'node':
        #将原先的data更名为raw_data
        raw_data = Node.objects.all()
        list_template = 'node_list.html'
        sub_title = '节点信息'
    if table == 'line':
        raw_data = Line.objects.all()
        list_template = 'line_list.html'
        sub_title = '线路信息'
    if table == 'device':
        raw_data = Device.objects.all()
        list_template = 'device_list.html'
        sub_title = '设备信息'

    #通过GET方法从提交的URL来获取相应参数
    if request.method == 'GET':
        #建立一个空的参数的字典
        kwargs = {}
        #建立一个空的查询语句
        query = ''
        #提交过来的GET值是一个迭代的键值对
        for key, value in request.GET.iteritems():
            #刨去其中的token和page选项
            if key != 'csrfmiddlewaretoken' and key != 'page':
                #由于线路和设备的外键均与node表格有关,当查询线路中的用户名称或设备信息中的使用部门时,可以直接通过以下方式跨表进行查找
                if key == 'node':
                    kwargs['node__node_name__contains'] = value
                    #该query用于页面分页跳转时,能附带现有的搜索条件
                    query += '&' + key + '=' + value
                #其余的选项均通过key来辨别
                else:
                    kwargs[key + '__contains'] = value
                    #该query用于页面分页跳转时,能附带现有的搜索条件
                    query += '&' + key + '=' + value
        #通过元始数据进行过滤,过滤条件为健对值的字典
        data = raw_data.filter(**kwargs)
    #如果没有从GET提交中获取信息,那么data则为元始数据
    else:
        data = raw_data

    #将分页的信息传递到展示页面中去
    data_list, page_range, count, page_nums = pagination(request, data)
    #建立context字典,将值传递到相应页面
    context = {
        'data': data_list,
        'table': table,
        'query': query,
        'page_range': page_range,
        'count': count,
        'page_nums': page_nums,
        'sub_title': sub_title,
    }
    #跳转到相应页面,并将值传递过去
    return render(request,list_template,context)


2.修改相应页面,首先是节点页面,搜索对象为


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值