实现搜索功能

  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_ 

示例:

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
        )
    )
)

base.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{% block title %}{% endblock %}Title</title>
    <link rel="stylesheet"type="text/css"href="{{ url_for('static',filename='css/base.css') }}">
    <script src="{{ url_for('static',filename='js/base.js') }}"></script>
    <base target="_blank" />

    {% block head %}{% endblock %}
</head>
<body background="http://p0.so.qhimgs1.com/t01d2e82c8c8f2be36c.jpg" id="myBody">
    <nav class="nav">
        <ul>
            <li><a href="{{ url_for('index') }}"><img src="../static/images/img1.png">首页</a></li>
            <li><a href=""><img src="../static/images/img2.png">下载</a></li>
            <li><a href="{{ url_for('question') }}"><img src="../static/images/img5.png">发布问答</a></li>
            <div>
                {% if user %}
                    <li><a href="{{ url_for('userbase',user_id = session.get('userid'),tag = 1) }}"><img src="../static/images/img3.png">{{ session.get('user') }}</a></li>
                    <li><a href="{{ url_for('logout') }}"><img src="../static/images/img4.png">注销</a></li>
                {% else %}
                    <li><a href="{{ url_for('login') }}"><img src="../static/images/img3.png">登录</a></li>
                    <li><a href="{{ url_for('regist') }}"><img src="../static/images/img4.png">注册</a></li>
                {% endif %}
             </div>
            <form action="{{ url_for('search') }}" method="get" class="navbar-form navbar-left">
            <img class="on_off" id="on_off" onclick="mySwitch()" src="../static/images/pic_bulbon.gif" width="50px">
            <button style="float: right;margin: 5px auto;border-radius: 5px;height: 26px" type="submit"><span class="glyphicon glyphicon-search" aria-hidden="true"></span>搜索</button>
            <input style="float: right;margin: 5px auto;border-radius: 8px;width: 200px;height: 20px;" type="text"name="q" placeholder="输入请关键字">
             </form>

        </ul>
    </nav>

<div id="bottom">
    <a href="">关于我们</a>
    <a href="">意见反馈</a>
    <a href="">安全保障</a>
</div>

<div class="copyright">
    <p>Copyright © 2017. Created by <a href="#" target="_blank">suxihong</a></p>
</div>

{% block main %}{% endblock %}
</body>
</html>

  视图函数search()

@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)

  

 

posted on 2017-12-20 16:06  072苏喜虹  阅读(139)  评论(0)    收藏  举报

导航