我从主页收到POST请求,用户将公司名称提交到HTML表单中。我还使用了名为company_bp
的Flask Blueprint。
<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文件,以通过添加名称为“ 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
无法建立正确的网址(应该为{{ 1}},但仅构建company/1456
部分。
答案 0 :(得分:1)
您可以使用占位符ID来构建网址以仍然使用url_for
,然后在您的JavaScript中用正确的值替换占位符:
var url = "{{ url_for('company_bp.company', company_id='X') }}".replace("X", your_id);