【问题标题】:How can I incorporate Python scripts into my website? Do I need a framework?如何将 Python 脚本合并到我的网站中?我需要一个框架吗?
【发布时间】:2016-07-21 20:47:15
【问题描述】:

我想知道是否有一种好方法可以将 Python 脚本合并到我当前的网站中。

我有一个个人网站和我自己的服务器,我已经使用了一段时间。到目前为止,它只是 html/css/javascript。我过去制作了一个 Python 脚本,它使用另一个网站的 API 来检索我想在我的网站上显示的内容。我只使用终端中的 Python 来获取输入并输出结果。有没有办法让我通过 Ajax 从 javascript 运行 Python 脚本来取回一些内容?

我真的不想使用 Django 或 Flask 之类的框架,因为我觉得它们似乎主要用于整个项目。我只想在我的网站的一页上使用一个 Python 脚本。这甚至是我应该做的事情吗?任何建议都会很棒。

【问题讨论】:

  • 感谢大家的建议。如果有人遇到这个问题并想知道我最终做了什么,我使用 php 通过 ajax 与我的 python 脚本进行通信。在php中,我使用'system'命令基本上将python脚本作为shell命令运行。

标签: javascript python


【解决方案1】:

如果您只使用 javascript 并且不认为框架是解决方案,那么您最好使用 javascript 重写您的 python 脚本。这两种语言有很多共同点,而且大部分内容都是可以转移的。从 javascript 调用 python 很可能不会那么好。同样,除非您共享您的 python 脚本(在 SO 中鼓励这样做,因为这里仅文本问题不太适合),所有答案都是基于意见的。

【讨论】:

  • 你说得对,所有答案都是基于意见的,但重要的是要考虑是否要在服务器端(脚本语言)或客户端(javascript)计算逻辑。可能@dan 需要一些服务器端操作,因此他在询问 python
【解决方案2】:

我完全同意你关于 Django 的看法,但我认为你可以给 Flask 一个机会,它真的很轻,我可以用于许多 porpouses。无论如何,如果你想调用 python 脚本,你需要一种调用它的方法。我认为您需要脚本的“侦听器”,例如服务或 Web 服务(因此,我认为 Flask 可能是一个非常简单的解决方案)。 调用脚本时要小心,可以从前端访问 Web 服务,但这不能通过“标准”脚本完成。 我的建议是看看 Flask 比你想象的更轻。

【讨论】:

    【解决方案3】:

    给Flask一个机会! 它是为您刚才描述的微服务而设计的。

    以下是您可以用不到 30 行代码完成的工作:

    app.py(flask 文件)

    from flask import Flask, request
    from flask import jsonify, render_template
    app = Flask(__name__, template_folder='.', static_folder='.', static_url_path='')
    
    
    @app.route('/')
    def index():
        return render_template('index.html')
    
    
    @app.route('/convert', methods=['POST'])
    def convert():
        return jsonify(items=[
            ("whatever python function output that you have")
        ])
    
    if __name__ == '__main__':
        app.run(debug=True)
    

    index.html 文件

            $.ajax({
                url: '/convert',
                type: 'POST',
                data: formData,
                async: false,
                cache: false,
                contentType: false,
                processData: false,
                success: function (data) {
                    var el = $('#req_result');
    
                    for (let item of data.items) {
                       ### show your result here ###
                      }
                    }
    
                    $('#req_hide').hide();
                    el.show();
                }
            });
          });
    

    【讨论】:

    • 感谢您推荐使用 Flask!我不妨试试看。我对此有一个问题...... ajax url 是'/convert',它在你的示例中的 app.route 中。它如何进入您的 app.py 文件以使用该路由?它是在某个地方或类似的地方注入到 html 中吗?
    猜你喜欢
    • 1970-01-01
    • 2011-11-28
    • 1970-01-01
    • 2023-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-15
    • 1970-01-01
    相关资源
    最近更新 更多