如何从 Flask 蓝图中的 HTML POST 变量构建动态路由



我有来自主页的POST请求,用户将公司名称提交到HTML表单中。我还使用名为company_bp的Flask蓝图。

<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>

当我从HTML表单中获取company_name时,我想使用其在数据库中的id为该特定公司动态构建路由,而不是我从表单中获得的名称。

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

我收到错误,说我需要在 HTML 表单中提供company_id如下:

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

我不明白在哪里以及如何将公司 ID 分配给变量company_id.我有来自通过 javascript 的数据库请求的 id 和公司名称,但不清楚如何将该 id 放入正确的变量中。

===

==更新

我已经更新了 html 文件以通过添加 name="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 表单时,我看到 id - 1456。但是,当我提交表单时,我收到错误The requested URL was not found on the server,并且POST没有构建应该company/1456的正确网址的问题,而只是构建company/部分。

您可以使用占位符 ID 构建 url 以仍使用url_for,然后在 javascript 中,将占位符替换为正确的值:

var url = "{{ url_for('company_bp.company', company_id='X') }}".replace("X", your_id);

最新更新