如何将flask HTML表单数据传递到单独的.py脚本中,然后在相同的HTML页面上显示



对于python/flask和编程来说都是非常新的。

我试图创建一个flask html表单,将从API拉数据,并采取用户输入,并通过一个单独的python脚本文件名为cityid.py运行它。然后让它将cityid.py脚本的结果返回到相同的HTML页面,但在输入框下方。

在HTML页面上的最终结果将是这样的:

输入您的城市:______________(提交按钮)

从cityid.py脚本中打印的结果

这是我在HTML文件中的表单。

<form name="search" action="/cityid.py" method="POST">
<input type="text" name="city_input">
<input type="submit1" name="submit" value="submit">
</form>

在我的cityid.py脚本中,我有以下内容开始脚本,参考这个问题。将html表单值发送到python脚本

import cgi
def city_details():
form = cgi.FieldStorage()
city = form.getvalue('city_input')
#rest of the script below, but the city variable is what I need to be user input from the flask form

下面是main.py文件

中的内容
@app.route("/city_details2", methods=['GET','POST'])
def city_details2():
if request.method == "POST":
return render_template("city_details2.html", city_details=city_details())

现在我似乎无法启动flask web服务器,因为我得到以下错误:

TypeError: can only concatenate str (not "NoneType") to str

它基本上已经尝试运行单独的cityid.py脚本,而不需要用户首先输入以获取city变量。

有人能告诉我我在这里做错了什么吗?我怀疑是@app.route有问题?或者在运行cityid.py脚本之前如何先获得用户输入?

我相信这会对你有帮助的。

这是一个简单的URL,它使用GET方法将两个值传递给hello_get.py程序。/cgi-bin/hello_get.py?first_name=ZARA&last_name=ALI下面是hello_get.py脚本,用于处理web浏览器给出的输入。我们将使用cgi模块,它可以很容易地访问传递的信息

import cgi, cgitb 
# Create instance of FieldStorage 
form = cgi.FieldStorage() 
# Get data from fields
first_name = form.getvalue('first_name')
last_name  = form.getvalue('last_name')

HTML:

<form action = "/cgi-bin/hello_get.py" method = "get"> 
First Name: <input type = "text" name = "first_name">  <br />
Last Name: <input type = "text" name = "last_name" />
<input type = "submit" value = "Submit" />
</form>

相关内容

最新更新