变量url和将非输入值从html传递到Python(Flask)

2024-05-19 08:20:21 发布

您现在位置:Python中文网/ 问答频道 /正文

根据this question,只能使用POST将输入表单中的数据从html发送到Python。我试图找出如何将一个值(实际上它最初包含在我从Python传入的字典中)从html传递到Python。你知道吗

我考虑过的两种方法(但还没有找到成功的方法)是:

  1. 看看Flask quickstart,这应该很简单。我只是不确定在html端传递这个parkCode的语法应该是什么样子。你知道吗
@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代码。你知道吗


Tags: 方法div表单parksearchreturn字典html
1条回答
网友
1楼 · 发布于 2024-05-19 08:20:21
  1. .routedecorator总是只处理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>

相关问题 更多 >

    热门问题