我制作了一个运行某些任务的python脚本,但是我希望它在客户端(前端表单)向服务器发送POST请求时启动。这样我就可以从客户端获取变量,并使用该变量运行脚本。
我想我需要在python脚本上定义一个服务器来接受发布请求,但是我不知道从哪里开始。你能帮我一点吗?
答案 0 :(得分:2)
我创建了一个简单的Flask服务器,该服务器将个人信息附加到从客户端接收到的列表中。
这里是app.py
,其中包含烧瓶Python服务器:
import os
import uuid
from flask import Flask, jsonify, request
from flask_cors import CORS
# instantiate the app
app = Flask(__name__)
app.config.from_object(__name__)
# enable CORS
CORS(app)
#static list containing persons
persons = []
#test check route
@app.route('/status', methods=['GET'])
def status():
return jsonify(dict({ 'message': 'Hello world'}))
@app.route('/person', methods=['POST'])
def add_person():
post_data = request.get_json()
response_object = dict({
'id': uuid.uuid4().hex,
'name': post_data.get('name'),
'age': post_data.get('name')
})
persons.append(response_object)
return jsonify(response_object), 201
@app.route('/person', methods=['GET'])
def get_persons():
return jsonify(persons), 200
@app.route('/person/<person_id>', methods=['GET'])
def get_person(person_id):
person = list(filter(lambda x: x['id'] == person_id, persons))
return jsonify(person), 200
if __name__ == '__main__':
app.run(debug=True)
保存脚本并使用以下命令运行它:
python app.py
这是一个示例表单,会将名称和年龄字段发布到烧瓶API:
// Write the following in index.js
window.onload = () => {
document.querySelector('#btnSubmit').addEventListener('click', function(event) {
const pName = document.querySelector('#pName').value;
const pAge = document.querySelector('#pAge').value;
if (!pName || !pAge) {
alert('Please enter all fields to continue!');
return;
}
const objectToSend = {
name: pName,
age: pAge
};
fetch('http://localhost:5000/person', {
method: 'POST',
mode: 'cors',
body: JSON.stringify(objectToSend)
headers: new Headers({
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*'
})
})
.then(function(response) {
return response.json()
})
.then(function(data) {
console.log(data);
})
.catch(function(err) {
console.err(err);
});
});
}
<!DOCTYPE HTML>
<HTML>
<!-- <script src="index.js"> -->
<BODY>
<FORM name="myform">
<label>Name: <input id="pName" type="text" placeholder="Enter name"></label>
<label>Age: <input type="number" id="pAge" placeholder="Enter age"></label>
<input type="button" id="btnSubmit" value="Submit">
</FORM>
</BODY>
</HTML>
希望您能早日入门!
建议阅读