繁体   English   中英

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

[英]How to build dynamic route from HTML POST variable in Flask Blueprint

我从主页提交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无法构建正确的URL的问题应该是company/1456 ,但是仅建立company/部分。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM