[英]Variable URLs and passing non-input value from html to Python (Flask)
根据这个问题,您只能使用POST
将数据从html的输入表单发送到Python。 我试图弄清楚如何将值(实际上是最初包含在我从Python传入的字典中的值)从html传递到Python。
我考虑过的两种方法(尚未弄清楚如何成功完成)是:
parkCode
的html语法应该是什么样子。 @app.route('/park/<parkCode>', methods =['GET', 'POST'])
def park(parkCode):
return render_template('park.html', parkCode = parkCode)
作为参考,这是我通过“ 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代码。
.route
装饰器始终仅处理URL路径。 由于form action
是HTML中的静态值,因此更改它的唯一方法是使用JavaScript(例如,通过在提交时更改action
属性)。 如果您要使用JavaScript,那么最好还是使用JavaScript提交请求本身,这将导致我们
是的,您可以使用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.