Flask: Как перенаправить при нажатии на запись автозаполнения по JQuery - PullRequest
1 голос
/ 11 января 2020

Вот фрагменты кода. У меня есть форма, подобная этой

<form class="form-inline md-form form-sm my-0">
    <input id="search_query" name="search_query" class="form-control form-control-sm mr-3 w-95"
        type="text" placeholder="Search" aria-label="Search">
</form>

, и я хочу автоматически заполнить свой поисковый запрос с помощью flask представления:

@bp_main.route("/autocomplete", methods=["GET"])
def autocomplete():
    query = request.args.get("q", type=str)
    items = get_search_results(query=query)
    results = [{"value": item.id, "label": item.name} for item in items]
    return jsonify(matching_results=results)

Вот часть js:

$(document).ready(function {
    $(function () {
        $("#autocomplete").autocomplete({
            source: function (request, response) {
                $.getJSON("{{ url_for('main.autocomplete') }}", {
                    q: request.term, // in flask, "q" will be the argument to look for using request.args
                }, function (data) {
                    response(data.matching_results); // matching_results from jsonify
                });
            },
            minLength: 2,
            select: function (event, ui) {
                console.log(ui.item.value); // not in your question, but might help later
            }
        });
    });
});

Пока я могу получить выпадающий список автозаполнения при поиске. Но я не мог понять, как отправить запрос на получение доступа к другому представлению и напрямую. Представление имеет только один именованный параметр, который должен быть именно тем, что форма ввода получает от щелчка пользователя. Таким образом, в основном пользователь нажимает item.label, а затем приложение передает соответствующий item.id этому представлению и отображает его. Точно так же, как любой поиск работает сегодня. Я понятия не имею, какие части мне не хватает.

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