实现搜索功能
- 准备视图函数search()
- 修改base.html 中搜索输入框所在的
- <form action="{{ url_for('search') }}" method="get">
- <input name="q" type="text" placeholder="请输入关键字">
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>{% block title%}car{% endblock %}</title> <link href="{{ url_for('static',filename='css/base.css') }}" rel="stylesheet" type="text/css"> <link rel="stylesheet" href="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css"> <script src="{{ url_for('static',filename='js/base.js') }}"></script> {% block head %} {% endblock %} <style> nav navbar-nav li { list_style: none; float: left; margin: 10px; } .nav1 li{ list-style: none; float: left; margin: 10px; } </style> </head> <body id="mybody"> <div class="daohang_box"><form action="{{ url_for('search')}}" method="get" > <nav class="navbar" role="navigation" style=""> <div class="container-fluid" id="container"> <div class="navbar-header"> <a class="navbar-brand" href="{{ url_for('index') }}">首页</a> </div> <div> <ul class="nav navbar-nav"> {% if username %} <li><a href={{ url_for('usercenter',user_id=session.get('userid'),tag=1) }}>{{ username }}</a></li> <li><a href="{{ url_for('logout') }}">注销 </a></li> {% else %} <li><a href="{{ url_for('login') }}" onclick="">登录</a></li> <li><a href="{{ url_for('regist') }}" onclick="">注册</a></li> {% endif %} <li><a href="{{ url_for('lable') }}" onclick="">发布问答</a></li> </ul> </div> <div style="float: right"> <img style="width: 50px; height: 50px" id="myonoff" onclick="mySwitch()" src="https://ps.ssl.qhimg.com/sdmt/119_135_100/t01ebad6510c93738fc.gif" style="width:50px" > </div> <div><input id="search_box" name='q'type="text" placeholder="请输入关键词查找"> <button id="search" type="submit">搜索</button> </div> {# <body background="http://p5.so.qhimgs1.com/bdr/_240_/t01fb87f1928a69d5eb.jpg" style="width: 100%; height: 100%"></body>#} </div> </nav> </form> {% block main %}{% endblock %} </body > </html> </body>
- 完成视图函数search()
- 获取搜索关键字
q = request.args.get('q’) - 条件查询
qu = Question.query.filter(Question.title.contains(q)).order_by('-creat_time’) - 加载查询结果:
return render_template('index.html', question=qu)
- 获取搜索关键字
- 组合条件查询
from sqlalchemy import or_, and_
示例:
Lobby.query.filter(
or_(
and_(
Lobby.id == Team.lobby_id,
LobbyPlayer.team_id == Team.id,
LobbyPlayer.player_id == player.steamid
),
and_(
Lobby.id == spectator_table.c.lobby_id,
spectator_table.c.player_id == player.steamid
)
)
)
@app.route('/search/') def search(): qu=request.args.get('q') ques=Question.query.filter( or_( Question.title.contains(qu), Question.detail.contains(qu) ) ).order_by('-creat_time') return render_template('index.html',question=ques)
https://stackoverflow.com/questions/13370993/sqlalchemy-query-and-or-issue