我正在尝试对我的烧瓶应用程序执行搜索

时间:2020-07-03 12:16:45

标签: python html sqlite flask jinja2

我正在做烧瓶教程here,最后,继续进行开发,该节说要实现一个搜索框,该搜索框按名称过滤索引页,在出现错误和错误之后,我才显示了搜索页,但仍然无法从搜索中得到结果。

这是我的搜索HTML:

    <form method="GET" action="{{ url_for('blog.search') }}">
       <input type="text" placeholder="Search by" name="q" value="{{ request.args.get('q', '') }}">
       <button type="submit">Go</button>
    </form>

这是我的路线

    from flask import request
    @bp.route('/search', methods=['GET','POST'])
    def search():
      db = get_db()
      query = request.args.get('q')
      posts = db.execute(
      "SELECT title, body FROM post WHERE body LIKE ? ",
      ('%'+ query +'%',)).fetchall()
      return render_template('blog/search.html', posts=posts )

这是我的搜索“ blog / search.html”模板

<ul>
  {% for post in posts %}

  <li> {{ post['title'] }} </li>
  <li> {{ post['body'] }} </li>

  {% endfor %}
</ul>
    

我的路线或sql查询是否存在问题? 还是有更好的方法在烧瓶中实现搜索,没有任何扩展,谢谢。

1 个答案:

答案 0 :(得分:0)

我知道了。 我在下面的'blog / search.html'模板上犯了错误,这是我的工作代码

我的搜索路线:

@bp.route('/search', methods=['GET','POST'])
def search():
  db = get_db()
  query = request.args.get('q')
  posts = db.execute(
    "select id, title from post where title LIKE ? ",
    ('%'+ query+'%',)
  ).fetchall()
  
  return render_template('blog/search.html', posts=posts)

注意:此路由仅检查我的数据库标题

我新的“ blog / search.html”模板:

{% if posts %}
    <ul>
      {% for post in posts %}
      <li><a href="{{ url_for('blog.single', id=post['id']) }}">{{ post[1] }}</a></li>
      {% endfor %}
    </ul>
{% else %}
    <p>no entries</p>
{% endif %}

注意:“ {{url_for ...}}”是用于查看搜索详细信息的链接

希望这对尝试在this教程中进行搜索的人有所帮助。 欢呼:)

相关问题