博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

实现搜索功能

Posted on 2017-12-20 20:31  占鹏  阅读(159)  评论(0)    收藏  举报
  1. 准备视图函数search()
  2. 修改base.html 中搜索输入框所在的
    1. <form action="{{ url_for('search') }}" method="get">
    2.    <input name="q" type="text" placeholder="请输入关键字">

  3. 完成视图函数search()
    1. 获取搜索关键字
      q = request.args.get('q’)
    2. 条件查询
      qu = Question.query.filter(Question.title.contains(q)).order_by('-creat_time’)
    3. 加载查询结果:
      return render_template('index.html', question=qu)

  4. 组合条件查询
    from sqlalchemy import or_, and_

 

# 模糊查找
@app.route('/search', methods=['GET', 'POST'])
def search():
    qu = request.args.get('q')
    query = Book.query.filter(
        or_(
            Book.title.contains(qu),
            Book.content.contains(qu),
        )
     ).order_by('-createdate').all()
    classfly = Classification.query.all()
    context = {
        'books': query,
        'classfly':classfly
    }
    return render_template('home.html', **context)
 <form method="get" action="{{ url_for('search') }}">
 2                                 <div class="layui-row">
 3                                     <div class="layui-col-md3" style="padding-left: 10px;">
 4                                         <input type="text" name="q" required lay-verify="required"
 5                                                placeholder="请输入搜索内容"
 6                                                autocomplete="off" class="layui-input">
 7                                     </div>
 8                                     <div class="layui-col-md3" style="padding-left: 10px;">
 9                                         <button type="submit" class="layui-btn layui-btn-primary">搜索</button>
10                                     </div>
11                                 </div>
12                             </form>
1 query = Book.query.filter(
2         or_(
3             Book.title.contains(qu),
4             Book.content.contains(qu),
5         )
6      ).order_by('-createdate').all()