1> 第一个程序
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "hello,world@"
2> 路由配置
① 使用装饰器
@app.route(url_name, methods)
② 使用api配置
app.add_url_rule(url, url_name, view_name) # view_name为视图函数名
③ 路由匹配规则
@app.route('/') # 匹配整个文字
@app.route('/user/<username>') # 传递参数
@app.route('/post/<int:post_id>') # 指定参数的类型
类型 | 描述 |
string | 接收任何不包含斜杠的文本(默认值) |
int | 正整数 |
float | 正浮点数 |
path | 类似string,可以包含斜杠 |
uuid | 接收UUID字符串 |
④ 获取传递参数的值
@app.route("/hey/<username>")
def hey(username):
return "我是 %s" % (username)
⑤ 获取页面传递的值
from flask import request
@app.route("/get/")
def hey():
res = request.args
name = res.get('name')
return "我是 %s" % (name)
3> 全局变量
from flask import Flask, render_template, g
app = Flask(__name__)
@app.before_request
def before_request():
# 全局变量
g.user = '张三'
@app.route("/get")
def hey():
return g.user
4> 解决中文为Unicode的问题
app.config["JSON_AS_ASCII"] = False
5> 范例
from flask import Flask,request,jsonify,session,g # pip install flask==1.1.4
from gevent import pywsgi # pip install gevent==22.10.2
app = Flask(__name__)
app.secret_key = "~I9wzDOqSVe#3"
# 读取数据
@app.route('/get',methods = ['get'])
def Projectlist():
name = request.values.get('name') # 获取get接口的参数name保存在name中
# name = request.args.get('name')
# 准备构造返回的json
project = {
"msg":"ok",
"status":200,
"data":{
"name":name
}
}
return jsonify(project)#把构造的json格式返回
# 登录
@app.route('/login',methods = ['POST'])
def post():
# data = request.stream.read()
data = request.get_json()
username = data.get("username")
password = data.get("password")
if not all([username, password]):
return jsonify(msg="参数不完整")
if username == "asd" and password == "123456":
# 如果验证通过 保存登录状态在session中
session["username"] = username
return jsonify(msg="登录成功")
else:
return jsonify(msg="账号或密码错误")
# 检查登录状态
@app.route("/session", methods=["GET"])
def check_session():
username = session.get("username")
if username is not None:
return jsonify(username)
else:
return jsonify(msg="出错了,没登录")
# 登出
@app.route("/logout", methods=["GET"])
def logout():
session.clear()
return jsonify(msg="退出登录!")
if __name__ == '__main__':
server = pywsgi.WSGIServer(('127.0.0.1',5000),app)
server.serve_forever()
6> 将python脚本添加到systemctl服务
vim /lib/systemd/system/fapi.service
[Unit]
Description=Python Service
After=multi-user.target
[Service]
WorkingDirectory=/path
User=root
Type=idle
ExecStart=/usr/bin/python3 /path/server.py
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable fapi.service
sudo systemctl start fapi.service
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END