Skip to main content

搜索课程功能实现

routes.py 文件中创建search(), 代码如下:

from flask import render_template, request, redirect, url_for

@app.route('/search/')
def search():
page = request.args.get('page',1,type=int)
keyword = request.args.get('keyword','')
# 如果没有keyword,就跳转到全部课程页面
if not keyword:
return redirect(url_for('course_list'))
# 根据课程名称查询
condition1 = Course.product_name.like('%'+ keyword + '%')
# 根据机构名称查询
condition2 = Course.provider.like('%' + keyword + '%')
courses = Course.query.filter(or_(condition1,condition2)).paginate(page=page,per_page=20)
return render_template('search.html',courses=courses,keyword=keyword)

base.html设置跳转连接和表单提交路径:

<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<div class="container">
<a class="navbar-brand" href="/">
<span style="padding-left:5px">大熊课堂</span>
</a>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav" style="margin:0 30px">
<li class="nav-item">
<a class="nav-link" href="{{url_for('index')}}">首页 </a>
</li>
<li class="nav-item">
<a class="nav-link" href="{{url_for('course_list')}}">全部课程</a>
</li>
<li class="nav-item">
<a class="nav-link active" href="{{url_for('about')}}">关于我们</a>
</li>
</ul>
<form class="form-inline my-2 my-lg-0" method="get" action="{{url_for('search')}}">
<input name="keyword" class="form-control mr-sm-2" type="search" placeholder="根据课程名称查询" aria-label="根据课程名称查询">
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
</form>
</div>
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" style="color:white;">
<button class="btn btn-outline-success" >
登录
</button>
</a>
</li>
</ul>
</div>
</nav>