开发者社区> 问答> 正文

Python POST JSON-是否需要网络框架?

我对python有点陌生,试图理解一个简单的JSON POST示例(我正在使用AngularJS)。我已经阅读了其他关于SO的Q,我看到大多数人都使用某种类型的框架(例如,cherrypy)。

我能够通过POST发送数据(字符串),并在.success上将其显示在简单的警报中。但是只有当我将字符串包装在python代码本身的html标记中时。但是,当我从python脚本中取出HTML标记并尝试返回JSON对象时,出现500服务器错误。所以我的直觉告诉我,我必须使用Web框架吗?

失败的JSON尝试代码。

JS:

tableModule.factory('Service', ['$http',
function($http) {
    return {
        post : function($path, $data, callback) {
            return $http.post($path, $data,{ headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'} }  ).success(callback);
        }

...
Service.post('test.cgi', $.param($data), function(data, status){...

python非常简单:

import cgi
import cgitb
import sys
import traceback
import json

cgitb.enable()

def getData1():

    ...generate json data...

    json_string = json.dumps(dictResult)
    return json_string

if __name__ == "__main__":
    try:
        #htmlTop() <-- code not shown, when I wrap the python in html, i can return simple strings
        getData1()
        #htmlBottom()
    except:
        cgi.print_exception()

有没有一种方法可以使这个简单的示例在不安装框架的情况下工作?

展开
收起
祖安文状元 2020-02-22 15:51:31 641 0
1 条回答
写回答
取消 提交回答
  • 简单回答是不”。框架只是由某人编写的一些代码,可以完成许多常见的事情,例如设置HTTP标头或处理cookie。无需使用框架,您可以编写自己的代码来执行这些操作。框架的优点是它们是由别人编写的(节省您的时间),并且往往在代码结构方面经过深思熟虑。

    作为框架只是别人编写的代码的另一个示例,您可以在此处查看cherrypy的源代码:https ://bitbucket.org/cherrypy/cherrypy/src

    关于您的示例,最好的查看位置是服务器的错误日志。https://docs.python.org/2/library/cgi.html#testing-your-cgi-script

    我对CGI模块不是很熟悉,但是您不需要print输出并将其发送到客户端吗?getData1函数看起来像将json_string返回到主体,然后不执行任何操作-不打印。

    您正在使用什么服务器?也许问题是这样的,它可以自动检测HTML的内容类型,但不能自动检测json,您需要在输出中指定该内容类型。

    print "Content-type:text/json\r\n\r\n"
    
    2020-02-22 15:51:39
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载