Tornado.WebRequestHandler()中的表单处理:了解如何处理表单提交
发布时间:2023-12-27 05:41:38
在Tornado中处理表单提交可以通过继承Tornado的WebRequestHandler类来实现。可以使用self.get_argument()或self.get_arguments()方法来获取提交表单中的数据。
- self.get_argument(name, default=None, strip=True)用于获取表单中指定名称的单个参数值。如果该参数不存在,则返回默认值。strip参数表示是否在获取参数值时去除首尾空白字符,默认为True。
- self.get_arguments(name, strip=True)用于获取表单中指定名称的所有参数值,并以列表的形式返回。
下面是一个简单的示例,演示了如何使用Tornado处理表单提交:
import tornado.ioloop
import tornado.web
# 定义处理表单提交的请求处理类
class FormHandler(tornado.web.RequestHandler):
def get(self):
# 渲染包含表单的HTML页面
self.render("form.html")
def post(self):
# 处理表单提交的POST请求
name = self.get_argument("name")
email = self.get_argument("email")
hobbies = self.get_arguments("hobbies")
# 打印获取到的表单数据
print("Name:", name)
print("Email:", email)
print("Hobbies:", hobbies)
# 返回响应给客户端
self.write("Form submitted successfully!")
# 创建应用程序并指定URL映射
app = tornado.web.Application([
(r"/", FormHandler),
])
if __name__ == "__main__":
# 启动应用程序
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
上述示例中,定义了一个名为FormHandler的请求处理类,继承自WebRequestHandler。在get()方法中渲染了包含表单的HTML页面form.html,在post()方法中通过self.get_argument()和self.get_arguments()方法获取表单提交的参数值,并进行相应的处理。
HTML模板文件form.html如下:
<!DOCTYPE html>
<html>
<head>
<title>Form Example</title>
</head>
<body>
<h1>Form Example</h1>
<form action="/" method="post">
<label for="name">Name:</label>
<input type="text" name="name" required>
<br>
<label for="email">Email:</label>
<input type="email" name="email" required>
<br>
<label for="hobbies">Hobbies:</label>
<input type="checkbox" name="hobbies" value="Reading">Reading
<input type="checkbox" name="hobbies" value="Sports">Sports
<input type="checkbox" name="hobbies" value="Music">Music
<br>
<input type="submit" value="Submit">
</form>
</body>
</html>
该HTML页面包含一个表单,通过action="/"将表单提交到应用的根URL,并指定请求方式为post。表单中包含了name、email和hobbies三个字段,其中hobbies字段使用了多选框。
在运行应用程序后,访问http://localhost:8888可看到包含表单的页面,填写表单并提交后,服务端会获取到提交的表单数据,并在控制台打印出来,同时返回响应给客户端显示"Form submitted successfully!"。
