python - 有什么方法可以通过 FLASK 将表单数据作为可用变量获取?
问题描述
我正在尝试通过flask从此html表单中获取数据并将其存储在python变量中,以便以后可以访问和处理。在我拥有的 python 代码中req = request.form
,它返回一个字典,其中包含我需要的所有信息,但我无法在 form_input() 函数之外访问它。无论如何我可以做到这一点吗?谢谢
蟒蛇代码
from flask import Flask, request, redirect, render_template
app = Flask(__name__)
path = r'C:\Users\tiberiu.ghimbas\PycharmProjects\pythonProject\form.html'
lista = []
app.testing = True
client = app.test_client()
@app.route('/')
def home():
return render_template('form.html')
@app.route('/submit_form', methods=['GET', 'POST'])
def form_input():
if request.method == "POST":
req = request.form
last_name = request.form['lname']
first_name = request.form['fname']
email = request.form['email']
department = request.form['departament']
data_angajare = request.form['data_angajare']
return redirect(request.url)
return render_template('form.html')
if __name__ == "__main__":
app.run()
html
<html>
<head>
<title>Form</title>
</head>
<body>
<form action = "/submit_form" method = "post">
<label for = "fname">First name:</label>
<input type = "text" id = "fname" name = "fname"><br>
<label for = "lname">Last name:</label>
<input type = "text" id = "lname" name = "lname"><br><br>
<label for = "mail">Email:</label>
<input type = "text" id = "mail" name = "email"></input> <br><br>
<input type = "radio" id = "1" name = "departament" value = "Hotel">
<label for = "1">Hotel</label>
<input type = "radio" id = "2" name = "departament" value = "Vanzari">
<label for = "2">Vanzari</label>
<input type = "radio" id = "3" name = "departament" value = "Marketing">
<label for = "3">Marketing</label>
<input type = "radio" id = "4" name = "departament" value = "IT">
<label for = "4">IT</label>
<br>
<br>
<label for = "date">Data angajarii: </label>
<input type = "date" id = "date" name = "data_angajare"> <br><br>
<input type = "submit" value = "submit"></input>
</form>
</body>
</html>
解决方案
您有多种方法可以实现这一目标:
将数据存储在当前或另一个 python 脚本中的全局变量中。这是最快的方法,但重启服务器后数据会丢失。如果您稍后将烧瓶放在使用工人的东西后面,您也会遇到问题,因为它们在您的全局变量中会有不同的值。还有烧瓶 g 对象。它是一个全局变量,仅在一个请求期间有效,但您可以从任何地方访问其数据。
将信息保存在一个(或多个)文件中。工作量大了一点,但数据是持久的,worker 不会有问题。
使用数据库(推荐)。Flask 带有 sqlite,但我个人更喜欢 pymysql ( https://pypi.org/project/PyMySQL/ ) 用于数据库。您将从选项 2 中获得好处,但您还可以轻松高效地搜索您的数据,这可能是也可能不是。大多数 Web 应用程序使用数据库来存储它们的数据。
使用烧瓶会话对象。您可以在此对象中保存任何用户/会话相关数据,每个会话都是唯一的。数据保存在用户浏览器的 cookie 中(加密)。它不是 100% 安全的,所以不要在里面放任何密码或类似的东西。默认情况下,flask 会话会持续到用户关闭浏览器(取决于浏览器),但您可以配置 flask 以将其保存更长时间。只要是同一个用户并且会话 cookie 存在,数据就会从一个请求转移到另一个请求。