尝试使用flask和flask_sqlachemy创建搜索

问题描述 投票:-3回答:1

我尝试创建一个烧瓶搜索,但是当它没有显示任何错误时,始终没有显示任何结果这是我在app.py中的代码

@app.route("/search", methods=['GET', 'POST'])
def shearch():
    if request.form == 'POST':
        search = request.form.get("search")
        results = Books.query.filter_by(search=request.form.search).all
        return render_template('search.html', results=results, search=search)
    return render_template('search.html')

和html文件中

<form class="search" action="/search" method="post">
    <fieldset class="search">
        {{ form.search.label }} {{ form.search(placeholder='search') }}
    </fieldset>

    <div class="submit-button">
        {{ form.submit }}
    </div>

    <table>
        {% if not results|length %}
        <h6> No results found. Please try again.</h6>
        {% else %}
        <tr>
            <th>isbn</th>
            <th>title</th>
            <th>author</th>
            <th>year</th>
        </tr>
        {% for result in results %}
        <tr>

            <th><a href="api/{{result['isbn']}}"> {{result['isbn']}}</th>

            <th><a href="books/{{result['title']}}"> {{result['title']}}</th>

            <th> {{result['author']}}</th>

            <th> {{result['year']}}</th>

        </tr>
        {% endfor %} {% endif %}


    </table>

它完全没有结果我尝试在app.py文件中使用另一种方法

if request.method == 'POST':
        search = str(form.search.data)
        results = Books.query.filter((Books.title, Books.author, Books.year, Books.isbn).like(search=form.search.data)).all()
        return render_template('search.html', results=results, search=search, form=form)
python flask search flask-sqlalchemy
1个回答
1
投票

我修复它特别感谢furas和我的朋友该代码应为

    form = SearchForm()
    search = form.search.data
    if request.method == 'POST':
        search = form.search.data
    search = search.strip() 
    results = Books.query.filter(or_(Books.title.ilike(f'%{search}%'), Books.author.ilike(f'%{search}%'), Books.year.ilike(f'%{search}%'), Books.isbn.ilike(f'%{search}%'))).all()

     return render_template('search.html', results=results, form=form, search=search)
    return render_template('search.html', form=form, search=search)

将修复它并在数据库中搜索

© www.soinside.com 2019 - 2024. All rights reserved.