欢迎访问宙启技术站
智能推送

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。表单中包含了nameemailhobbies三个字段,其中hobbies字段使用了多选框。

在运行应用程序后,访问http://localhost:8888可看到包含表单的页面,填写表单并提交后,服务端会获取到提交的表单数据,并在控制台打印出来,同时返回响应给客户端显示"Form submitted successfully!"。