我有一个用PHP编写的页面,其中包含一部分javascript,并且我正在尝试获取一个函数,用于将一些JSON数据发送到python文件。我对Flask真的很陌生,尽管我已经阅读了文档,但对我来说没有任何帮助。这是我的Javascript函数:
<script src="js/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/jquery.validate.min.js"></script>
<script>
$(document).ready(function () {
.
.
.
function encrypt() {
$.ajax({
type: "POST",
url: "/crypt",
contentType: "application/json",
data: JSON.stringify(generateParamsU()),
dataType: "json",
success: function(response) {
console.log(response);
},
error: function(err) {
console.log(err);
}
});
}
我对应的python代码是:
from flask import Flask
app = Flask(__name__)
from app import routes
@app.route('/crypt', methods=['POST', 'GET'])
def crypt():
data = request.get_json()
return jsonify(data)
我已经设置了一些非常简单的方法来接收/发送数据。该文件位于服务器上(位于cpanel上),并且两个文件都位于同一目录中。
以现在的方式进行设置时,出现此错误:
http://www.myweb.org/crypt 404(未找到)
当我将AJAX发布url
更改为url: "crypt.py"
(文件名)时,出现以下错误:
POST http://www.myweb.org/custom/crypt.py 500(内部服务器 错误)
我真的不知道是什么原因造成的。我以为我在路由错误,但这就是我在网上看到它的方式。我不确定...
我认为问题是我根本没有运行python文件。如果我没有运行python文件,Flask服务器将无法启动,对吗?我不确定。任何帮助将不胜感激。
谢谢
答案 0 :(得分:0)
首先要澄清一些事情。
我不了解cpanel的详细信息,但我想您缺少一些细节。 Apache或nginx(可能在您的服务器的80端口上运行)没有默认的python处理程序,尤其是没有集成flask应用程序,这就是调用crypt.py时获得500的原因。
您应该首先以独立方式运行Flask,默认情况下,flask监听端口5000。为了以独立方式运行flask应用程序,请在代码中添加以下内容。
app.run(host='0.0.0.0', debug=True)
Run方法接受更多参数:http://flask.pocoo.org/docs/1.0/api/#flask.Flask.run
现在您可以使用以下命令启动烧瓶独立服务器
python crypt.py
烧瓶服务器将开始侦听端口5000。
您现在应该可以将数据发布到http://www.myweb.org:5000/crypt。
如果您不想将flask应用程序集成到apache或nginx中,则应该配置反向代理或uwsgi,但两者都更为高级。首先,您应该了解基础知识,并让应用程序在烧瓶调试模式下独立运行。
由于您的flask应用程序现在正在侦听端口5000而不是80,因此您还需要更改ajax请求以将其发布到:http://www.myweb.org:5000/crypt,我不熟悉javascript / ajax,但我想
url: "http://www.myweb.org:5000/crypt",就足够了。