Django网站建设-全局导航配置,全局搜索

本文介绍了如何在Django中配置全局导航栏,通过request.path进行路径判断,实现导航提示。同时,讲解了全局搜索功能的实现,包括修改静态文件后清除缓存的重要性,更新js文件中的search_click函数以传递搜索数据,以及在视图函数中利用Django的Q函数和数据库操作方法进行多条件查询。
摘要由CSDN通过智能技术生成

导航栏全局配置

对基础模板进行配置,通过request.path的判断,实现导航提示提示,其他页面复用此模板,利用request.path|slice:‘数字’进行路径判断
<ul>
    <li {% if request.path == '/' %}class="active"{% endif %}><a href="{% url 'index' %}">首页</a></li>
    <li {% if request.path|slice:'7' == '/course' %}class="active" {% endif %}>
        <a href="{% url 'courses:courses_list' %}">公开课<img class="hot" src="{% static 'images/nav_hot.png' %}"></a>
    </li>
    <li {% if request.path|slice:'22' == '/organization/teacher_' %}class="active" {% endif %}>
        <a href="{% url 'organization:teacher_list' %}">授课教师</a>
    </li>
    <li {% if request.path|slice:'27' == '/organization/organization_' %}class="active" {% endif %} ><a href="{% url 'organization:organiztion_list' %}">授课机构</a>
    </li>
</ul>

全局搜索

修改过静态文件后需要清除缓存才能生效,不然还是用的老的文件,清除缓存之前切记保存
修改js文件下的搜索函数search_click,修改为正确路径,通过搜索栏输入数据,通过js将数据包括在keywords里面,并post至正确页面中
//顶部搜索栏搜索方法
    function search_click(){
    var type = $('#jsSelectOption').attr('data-value'),
        keywords = $('#search_keywords').val(),
        request_url = '';
    if(keywords == ""){
        return
    }
    if(type == "course"){
        request_url = "/courses/courses_list?keywords="+keywords
    }else if(type == "teacher"){
        request_url = "/organization/teacher_list?keywords="+keywords
    }else if(type == "org"){
        request_url = "/organization/organization_list?keywords="+keywords
    }
    window.location.href = request_url
}
修改视图函数,获取keywords值,并联动数据库进行索引,利用Q函数进行多条件查询,并使用Django独有的数据库操作方法,注意双下引号
Django数据库操作
Django数据库操作
operators = {  
        'exact': '= %s',  
        'iexact': 'LIKE %s',  
        'contains': 'LIKE BINARY %s',  
        'icontains': 'LIKE %s',  
        'regex': 'REGEXP BINARY %s',  
        'iregex': 'REGEXP %s',  
        'gt': '> %s',  
        'gte': '>= %s',  
        'lt': '< %s',  
        'lte': '<= %s',  
        'startswith': 'LIKE BINARY %s',  
        'endswith': 'LIKE BINARY %s',  
        'istartswith': 'LIKE %s',  
        'iendswith': 'LIKE %s',  
    }  

TeacherListView

#通过搜索的keywords对数据进行搜索,在路径中的使用GET方法
keywords = request.GET.get('keywords','')
if keywords:
    all_teacher = all_teacher.filter(Q(TeacherName__icontains=keywords)|Q(WorkCompany__icontains=keywords)|Q(WorkCompany__icontains=keywords)|Q(Characteristic__icontains=keywords))

OrganiztionListView

# 通过搜索的keywords对数据进行搜索,在路径中的使用GET方法
keywords = request.GET.get('keywords', '')
if keywords:
    all_org = all_org.filter(Q(TeacherName__icontains=keywords) | Q(WorkCompany__icontains=keywords) | Q(WorkCompany__icontains=keywords) | Q(Characteristic__icontains=keywords))

CoursesListView

# 通过搜索的keywords对数据进行搜索,在路径中的使用GET方法
keywords = request.GET.get('keywords', '')
if keywords:
    all_course = all_course.filter(Q(CourseName__icontains=keywords) | Q(Describe__icontains=keywords)|Q(Detail__icontains=keywords)|Q(CourseType__icontains=keywords))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值