Как построить динамический маршрут из переменной HTML POST в Flask Blueprint - PullRequest
0 голосов
/ 21 июня 2019

У меня есть POST-запрос с главной страницы, где пользователь отправляет название компании в HTML-форму. Я также использую Flask Blueprint под названием company_bp.

<form action="{{ url_for('company_bp.company') }}" class="search_form" method="post">
<input type="text" id="search_input" placeholder="Name" name="company_name" autocomplete="off">
<input type="submit" value="research">
                <ul id="search_list">

                </ul>
</form>

Когда я получаю company_name из формы HTML, я хотел бы динамически построить маршрут для этой конкретной компании, используя ее идентификатор в базе данных, а не его имя, которое я получил из формы.

@company_bp.route('/<company_id>',methods=['POST'])
def company(company_id):
    if request.method=='POST':

Я получаю сообщение об ошибке, которое говорит о том, что мне нужно указать company_id в форме HTML как:

{{ url_for('company_bp.company', company_id=company_id) }}

Я не понимаю, где и как назначить идентификатор компании для переменной company_id. У меня есть идентификатор и название компании из запроса БД через javascript, но не ясно, как поместить этот идентификатор в правильную переменную.

===== ОБНОВЛЕНО

Я обновил html-файл, чтобы изменить форму, добавив строку с именем = "company_id":

 <form action="{{ url_for('company_bp.company', company_id=company_id) }}" class="search_form" id="search_form" method="post">
                <input type="text" id="search_input" placeholder="Name" name="company_name" autocomplete="off">
                <input type="hidden" name="company_id" id="co_id">
                <input type="submit" value="research">
</form> 

Когда я проверяю html-форму, я вижу идентификатор - 1456. Однако, когда я отправляю форму, я получаю ошибку The requested URL was not found on the server, и проблема в том, что POST не создает правильный URL, который должен быть company/1456, а только сборок company/ часть.

1 Ответ

1 голос
/ 21 июня 2019

Вы можете создать URL с идентификатором заполнителя, чтобы по-прежнему использовать url_for, а затем в своем JavaScript замените заполнитель на правильное значение:

var url = "{{ url_for('company_bp.company', company_id='X') }}".replace("X", your_id);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...