我正在尝试运行一个python脚本,它接收在javascript中收集的数据,在python中处理它,然后将其插入到数据库中。我在Apache上运行网页,我知道insertEngagement()函数可以连接到我的数据库。
但是,当我使用以下AJAX请求将数据发送到python文件时,app.run()会启动,但永远不会进入insertNewData()函数。我猜这与我正在使用的路径有关?任何帮助,将不胜感激!
这是我在/home/webpage/script.js中的AJAX请求:
$.ajax({
url: "/home/pythonScripts/processdata.cgi/process",
data: { employeeText: input1, customerText: input2, chatData: otherData},
type: "POST",
success: callbackFunc
});
然后我的python在/home/pythonScripts/processdata.cgi中:
#!C:\path\to\python\Python37\python.exe
import sys
import getopt
import cgi
import cgitb; cgitb.enable()
import mysql.connector as conn
#insertdata is another file with functions in it
import insertdata
from flask import Flask, render_template, redirect, url_for,request
from flask import make_response
app = Flask(__name__)
def htmlTop():
print("""Content-type:text/html\n\n
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>My server-side template</title>
</head>
<body>""")
def htmlTail():
print("""</body>
</html>""")
@app.route("/home/pythonScripts/processdata.cgi/process", methods=['GET','POST'])
def insertNewData():
print ("Started insert new data")
if request.method == 'POST':
print ("Inside conditional")
employeeText = request.form['employeeText']
customerText = request.form['customerText']
chatData = request.form['chatData']
# ... use data from request
return "Success"
else:
return "Error"
if __name__ == "__main__":
try:
htmlTop()
app.run(debug=True)
htmlTail()
except:
cgi.print_exception()
我也在使用.cgi,因为我无法配置Apache来运行python脚本而不是只返回文本文件。
作为替代答案,如果这不是生产并且你正在使用Ubuntu系统,我设法在几天内运行Flask应用程序。
这是我所遵循的教程的链接;
我知道它没有回答你的问题,但我发现它第一次有用,它没有任何问题,使用表格,请求API数据和使用Jinja模板引擎打印。
您还可以使用大量其他开发的插件进行用户管理和登录,身份验证,但最好的部分是,您可以使用Python执行的任何操作都可以通过基于Web的应用程序进行订购,因此当您了解它是如何进行的所有的作品,你做的很少。
在回答这个问题时,我个人使用了Gunicorn,并使用Nginx作为反向代理。但是没有理由说Apache不能在我知道的那个阵容中替代Nginx。