попробуйте создать поиск, используя flask и flask_sqlachemy - PullRequest
0 голосов
/ 08 мая 2020

Я пытаюсь создать поиск flask, но когда он не показывает мне никаких ошибок, он всегда не показывает мне никакого результата, это мой код в 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)

1 Ответ

1 голос
/ 08 мая 2020

я исправил Особая благодарность 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)

, который исправит его и выполнит поиск в базе данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...