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

xiaoxiao2021-02-28  42

导航栏全局配置

对基础模板进行配置,通过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))
转载请注明原文地址: https://www.6miu.com/read-2622744.html

最新回复(0)