【问题标题】:How to build dynamic route from HTML POST variable in Flask Blueprint如何从 Flask Blueprint 中的 HTML POST 变量构建动态路由
【发布时间】:2019-06-20 21:33:34
【问题描述】:

我有来自主页的 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 从 DB 请求中获得了 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/ 部分。

【问题讨论】:

    标签: javascript python-3.x forms flask


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢。我会尝试。这是 javascript 代码 - replace("X", your_id) 吗?我对JS不够熟悉
    • 是的,这将在您的 (html) 模板中
    • 完全糊涂了。它看起来像 html 和 js 的混合,还有一些 python。仅供参考,我有前端的 jinja 模板。
    • 这只是 javascript - 我将使用您提到的“我通过 javascript 从 DB 请求中获得 id 和公司名称”,并且我建议将添加到此 javascript 中。您能否添加您当前的 JS,以便我可以使用它?
    • JS 到目前为止工作正常。我现在在从 Post 请求到 python 中获取价值时遇到问题。
    猜你喜欢
    • 2016-05-13
    • 1970-01-01
    • 1970-01-01
    • 2018-03-23
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    相关资源
    最近更新 更多