导航栏全局配置
对基础模板进行配置,通过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))