如何在Mod_Python中通过POST或GET发送数据?

时间:2017-04-10 14:30:45

标签: python apache post mod-python

使用JS,我发送一个AJAX帖子请求。

 $.ajax(
        {method:"POST",
        url:"https://my/website/send_data.py",
        data:JSON.stringify(data),
        contentType: 'application/json;charset=UTF-8'

在我的Apache2 mod_Python服务器上,我希望我的python文件能够访问data。我怎样才能做到这一点?

def index(req):
    # data = ??

4 个答案:

答案 0 :(得分:2)

正如Grisha(mod_python的作者)在一次私人通信中指出的,这是不支持application/json并输出“ HTTP 501 Not Implemented”错误的原因:

https://github.com/grisha/mod_python/blob/master/lib/python/mod_python/util.py#L284

解决方案是修改它,或者使用常规的application/x-www-form-urlencoded编码,或者使用mod_python.publisher处理程序以外的其他东西。

带有mod_pythonPythonHandler mod_python.publisher的示例:

<script type="text/javascript">
var data = JSON.stringify([1, 2, 3, '&=test', "jkl", {'foo': 'bar'}]); // the data to send
xhr = new XMLHttpRequest();
xhr.open("POST", "testjson.py");
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function(res) { console.log(xhr.responseText); };
xhr.send('data=' + encodeURIComponent(data));
</script>

服务器端:

import json
from mod_python import apache 

def index(req):
    data = json.loads(req.form['data'])
    x = data[-1]['foo']
    req.write("value: " + x)

输出:

值:条形

成功!

答案 1 :(得分:1)

来自Mod_python docs

可以使用 request.read() 函数读取

POST请求之类的客户端数据。

答案 2 :(得分:0)

来自Mod Python文档here

Mod Python Docs

您可以在这里进行操作,例如获取数据

def index(req):
    data = req.read()

其他链接:http://vandermerwe.co.nz/?p=9

答案 3 :(得分:0)

正如我所说,从新版本看来,它像是一个配置问题。

首先,尝试设置PythonPath指令。

第二,PythonHandler应该是您的file,即:

PythonHandler testjson