Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 向Tornado服务器发送POST请求中的非字符串参数_Python_Post_Tornado - Fatal编程技术网

Python 向Tornado服务器发送POST请求中的非字符串参数

Python 向Tornado服务器发送POST请求中的非字符串参数,python,post,tornado,Python,Post,Tornado,在Tornado中RequestHandler的post方法中,self.get_参数(arg,None)获取请求中包含的arg的值 我看到的所有示例都将字符串作为值返回,这让我想知道我们是否可以在POST请求中发送字符串以外的数据 我感兴趣的具体用例是:我有一个表单,页面上有多个字段,我想在向服务器发送的POST请求中,将其字段的子集打包在一个参数中,比如 packed = self.get_argument('packed_arg', None) arg1 = packed['arg1']

在Tornado中RequestHandler的
post
方法中,
self.get_参数(arg,None)
获取请求中包含的
arg
的值

我看到的所有示例都将字符串作为值返回,这让我想知道我们是否可以在POST请求中发送字符串以外的数据

我感兴趣的具体用例是:我有一个表单,页面上有多个字段,我想在向服务器发送的POST请求中,将其字段的子集打包在一个参数中,比如

packed = self.get_argument('packed_arg', None)
arg1 = packed['arg1']
arg2 = packed['arg2']
...

而其余字段仍然是单独的参数。到目前为止,我认为数据结构类似于dict(可能是JSON),对于这个压缩参数,这是否可行?

JSON将非常适合您的目的

在客户端执行以下操作:

var data = {'packed_arg':get_form_args(); } 
函数
get\u form\u args()
是抽象的。你可以用任何方式实现它。默认情况下,Javascript对象是JSON。 所以在客户端,您必须从表单字段创建字典。 这样想:

var data = {};
var names_to_pack = ['packed1', 'packed2']
$(form).find('input, select').each(function (i, x) {
    var name = $(x).attr('name')
    if(names_to_pack.indexOf(name) != -1) { 
        if(!data.packed) {
            data.packed = {};  
        }
        data['packed'][name] = $(x).val(); 
    } else { 
        data[name] = $(x).val(); 
    }
});
$.post('/', data); 
然后在服务器端:

raw_packed = self.get_argument('packed_arg', None)
packed = {}
if raw_packed: 
    packed = tornado.escape.json_decode(raw_packed)
arg1 = packed.get('arg1')
arg2 = packed.get('arg2')

您还可以访问
self.request.arguments
中的所有POST参数

为什么不将它们作为单独的POST参数发送?@IgnacioVazquez Abrams,要打包到单个参数中的字段集不是固定的。相反,不同的字段将根据表单上的其他固定字段进行打包。我打算以“自定义参数”的名义将它们分组。在客户端,如何将其他数据(即表单上的其他字段)与此
packed_arg
一起发布?谢谢。我猜客户端的函数
get\u form\u args()
会返回字典吗?