繁体   English   中英

可变URL并将非输入值从html传递到Python(Flask)

[英]Variable URLs and passing non-input value from html to Python (Flask)

根据这个问题,您只能使用POST将数据从html的输入表单发送到Python。 我试图弄清楚如何将值(实际上是最初包含在我从Python传入的字典中的值)从html传递到Python。

我考虑过的两种方法(尚未弄清楚如何成功完成)是:

  1. 看一下Flask快速入门 ,这应该很简单。 我只是不确定在传递给parkCode的html语法应该是什么样子。
@app.route('/park/<parkCode>', methods =['GET', 'POST'])
def park(parkCode):
    return render_template('park.html', parkCode = parkCode)
  1. 另外,是否有某种方法可以简单地将html字符串发送到Python, 而无需使用输入表单? 我还没有找到一种方法来做到这一点。

作为参考,这是我通过“ parks”字典发送的行:

return render_template('search_results.html', parks=parks)

然后,在我的search_results.html文件中:

{% for park in parks %}
    <div method = "POST" action = "/park"><a href="park.html">{{park["fullName"]}}</a></div>
{% endfor %}

但是我想将park["fullName"]发送到我的Python代码。

  1. .route装饰器始终仅处理URL路径。 由于form action是HTML中的静态值,因此更改它的唯一方法是使用JavaScript(例如,通过在提交时更改action属性)。 如果您要使用JavaScript,那么最好还是使用JavaScript提交请求本身,这将导致我们

  2. 是的,您可以使用AJAX发送请求。 从ES6开始,最简单的方法是fetch 选择使用表单还是使用AJAX取决于您希望在请求后发生的事情:提交的表单会导致呈现新页面,而AJAX请求无法更改当前页面,仅触发JavaScript代码(尽管显然可以根据需要在JavaScript中更改页面)。

基本上,没有JavaScript,您将无法做您想做的事情。 在没有JavaScript的情况下无法工作的第三个选项是使用原本应使用的形式。 flask方面,它不涉及在路由内部命名参数,而是使用request.args (用于GET表单)或request.form (用于POST表单):

@app.route('/park', methods =['POST'])
def park():
    parkCode = request.form.get('parkCode')
    return render_template('park.html', parkCode = parkCode)

附带HTML:

<form action="/park" method="POST">
  <input name="parkCode"/>
  <input type="submit" value="Submit"/>
</form>

暂无
暂无

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

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