【问题标题】:Calling Python file in an Ajax Call在 Ajax 调用中调用 Python 文件
【发布时间】:2023-03-23 07:17:01
【问题描述】:

所以我已经对 angularjs 应用程序的简单架构建立了相当不错的理解,调用 $http 并发布到 php 页面,并接收回数据。

我想知道的是如何使用 python 执行相同类型的函数。是否可以让 python 执行相同的操作,使用接受发布数据并回显 json 的自包含脚本文件?

$username = $_POST['username'];

在脚本开头键入变量赋值,并且:

echo json_encode(response);

键入响应。

我想将 Python 用于我公司的一些内部工具,因为它为远程运行 powershell 脚本提供了更好的库(因为这些工具都是 linux 托管的),并且总体上只有满足我需求的库。我只是很难找到如何设置的简明答案。

---编辑------

所以我使用以下信息设置了一个快速示例。

角度: var app = angular.module("api");

app.controller("MainController", ["$scope","$http",MainController]);

function MainController($scope,$http){

    $http.post('/api',{test: "hello"})
        .then(function(response){
            console.log(response.data);
        })

}

烧瓶: 从烧瓶进口烧瓶,请求 导入json

app = Flask(__name__)


@app.route('/api', methods=['POST', 'GET'])
def api():
    if request.method == 'POST':
       request.data
    return 'You made it' # Just so I originally could see that the flask page                    

if __name__ == "__main__":
    app.run()

我收到了该 URL 的 404。如果我改变角度来查看'localhost:5000/api'(我的烧瓶应用程序正在运行),它会给我“不支持的 URL 类型”的错误。

我看到当我做第一个案例时,它试图查看 http://localhost/api ,这是正确的!除了港口。这就是我尝试指定端口的原因。

对下一步有什么建议吗?

【问题讨论】:

    标签: python angularjs ajax http flask


    【解决方案1】:

    使用烧瓶。

    您可以在烧瓶“服务器”上托管您的应用程序,并通过 python 处理返回您想要的内容。

    http://flask.pocoo.org/

    使用文档设置一个路由,您将在其中使用 jquery 或其他方式发布您的数据,然后在该路由上您可以执行您的 python 操作并在需要时将 JSON 返回到您的 Angular 应用程序。

     from flask import request   
    
     @app.route('/test', methods=['POST', 'GET'])
        def test():
            if request.method == 'POST':
                print request.data['your_field']
    
            return your_json_data
    

    【讨论】:

    • 所以对于路线,我可以指定类似 ('/test') 的内容,然后让我的 ajax 调用将其用作 url?如何通过烧瓶路由功能(在本例中为 test() )访问请求数据?在 php 中我只看 $_POST[''],在 python 中是否有等价物?
    • 这非常有用!在角度方面,我可以调用'/test'?还是我必须调用该页面的完整网址?
    • 取决于你是否在同一个域、IP 和 PORT 上,否则调用一个完整的 URL,但我认为没什么大不了的。
    • 我第一次尝试编辑了我的原始帖子,试图使用这些信息。我知道在 php 中,我只是简单地回显了我的响应,但似乎在这个示例中,您返回了值。我理解正确吗?如果是这样,我想在返回之前对值进行编码吗?
    • 确切地说,您将值返回到您的角度。要进行编码,您可以使用 json.dumps 但您需要先导入 json。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-23
    • 1970-01-01
    相关资源
    最近更新 更多