tornado处理表单提交的中文数据

背景描述

前端通过表单提交了带有中文的数据,后端想对这些数据进行处理。request.body是一个binary变量,虽然可以将之解码为utf8但仍然不是中文形式,类似于

%E8%BF%98%E6%AC%BE%E6%88%90%E5%8A%9F%E9%A1%B5

查过相关回答后,我找到一种可行的办法,在此记录一下。

解决方法

前端HTML文件指定form表单的相关参数,如下:

<form action="/" method="post" accept-charset="UTF-8" enctype="application/x-www-form-urlencoded">
</form>

后端post过程如下:

import tornado
import urllib.parse

class MyTestHandler(tornado.web.RequestHandler):
    def get(self):
        self.render('test.html')

    def post(self):
        body = self.request.body.decode('utf8')
        body = urllib.parse.unquote(body)
        print(body)
        # something else
        # self.render('test.html')

我的前端结果输入了两句中文文本
在这里插入图片描述
结果如下:

文案内容_0=这是一个测试文案&文案内容_1=这是另一个测试文案

学习笔记

注意enctype这个参数,我之前使用的是multipart/form-data,但是实际解析起来发现,虽然可以显示中文,结果类似:
在这里插入图片描述

但是还有其他的问题:

  1. body中还多了指定的分隔符,形如------WebKitFormBoundarySUFFIX,其中的每post一次,SUFFIX都会变化
  2. 如果有内容,body还会多一个Content-Disposition: form-data;

其实这是一个关于http协议处理的问题,我没有进一步了解。觉得这篇博客整理的很简明。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 网页可以通过发送 HTTP 请求,将数据传递给后台的 Python 脚本。具体而言,可以利用 Python 的 Flask 或 Django 框架搭建 RESTful API,从而实现网页和 Python 脚本之间的数据传递。此外,还可以使用 Python 的 requests 库,从网页直接向后台发送数据请求。 ### 回答2: 网页传数据给Python脚本的方法有多种,下面介绍两种常见的方法。 一种方法是通过表单提交数据。在网页的HTML代码中,可以使用<form>标签和<input>标签创建一个表单,用户填写表单后,点击提交按钮,表单数据会被自动传输给服务器。Python脚本可以通过接收HTTP请求的框架(如Django、Flask等)来处理这个请求,从而获取表单数据。可以使用request对象的POST方法获取表单数据,并进行处理。 另一种方法是通过Ajax技术传输数据。在网页的JavaScript代码中,可以使用XMLHttpRequest对象发送POST或GET请求,并将数据传输到服务器。Python脚本可以使用相应的HTTP库(如requests库)接收和处理这个请求。在Python脚本中,可以使用request库的post或get方法获取请求中的数据。 无论使用哪种方法,网页传输给Python脚本的数据都可以是文本或二进制格式的。Python脚本可以使用相应的库解析和处理数据,如json库可以解析JSON格式的数据,pickle库可以处理二进制数据。 总之,网页传数据给Python脚本的关键是实现数据的传输和接收,而具体的实现取决于网页的前端技术和后台框架的选择。 ### 回答3: 网页如何传数据给Python脚本,有几种常用的方法可以实现。 第一种方法是使用HTTP请求,网页可以通过HTTP POST或HTTP GET请求将数据传递给Python脚本。在网页中,可以通过表单的方式将数据封装为表单参数,然后使用POST方法将表单数据发送给Python脚本。Python脚本可以使用框架如Flask或Django来接收和处理这些HTTP请求。 第二种方法是使用AJAX技术,网页可以通过JavaScript异步发送HTTP请求将数据传递给Python脚本。JavaScript可以使用XMLHttpRequest对象或fetch API发送HTTP请求,并将数据以JSON格式或其他形式发送给Python脚本。Python脚本可以使用框架如Tornado或Flask来处理这些异步请求。 第三种方法是使用WebSocket技术,网页可以使用JavaScript的WebSocket对象与Python的WebSocket服务器建立持久连接,并通过该连接传递数据。Python脚本可以使用框架如Tornado或Flask-Sockets来处理WebSocket请求,并与网页进行实时的双向通信。 总结起来,网页可以通过HTTP请求、AJAX技术或WebSocket技术将数据传递给Python脚本。Python脚本可以使用框架来接收和处理这些数据,并进行相应的处理和响应。选择哪种方法取决于具体的需求和技术栈。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值