【Python】快速上手 Flask
文章目录
1. 基本使用
pip install flask
from flask import Flask
app = Flask(__name__)
@app.route('/flask')
def hello_flask():
return 'Hello Flask'
app.run()
2. Flask 路由/重定向
2.1 Flask 路由
这两个规则看起来类似,但在第二个规则中,使用斜杠(/)。因此,它成为一个规范的URL,使用 /python
或 /python/
返回相同的内容
但是,如果是第一个规则,/flask/
URL会产生 404 Not Found 页面。
from flask import Flask
app = Flask(__name__)
@app.route('/flask')
def hello_flask():
return 'Hello Flask'
@app.route('/python/')
def hello_python():
return 'Hello Python'
app.run(host="0.0.0.0",port=8888,debug=True)
2.2 重定向(redirect)
from flask import Flask, redirect
app = Flask(__name__)
@app.route('/index')
def index():
return redirect('https://baidu.com')
app.run(host='0.0.0.0', port=8888, debug=True)
3. 变量规则
转换器 | 描述 |
---|---|
int | 整型 |
float | 浮点型 |
path | 接受用作目录分隔符的斜杠 |
string | 默认,字符串 |
from flask import Flask, make_response, request # 注意需导入 make_response
app = Flask(__name__)
# <传参>
@app.route('/home/<params>')
# 函数要记得去接收参数
def home(params):
return '传入的参数: {}'.format(params)
# http://127.0.0.1:8888/home/123
# 如果需要限制传入参数的类型,可以使用转换器
@app.route('/count/<int:number>')
def count(number):
return '传入的数字加10 : {}'.format(number + 10)
@app.route('/float/<float:num>')
def count_float(num):
return '传入的数字加10.12 : {}'.format(num + 10.12)
app.run(host='0.0.0.0', port=8888, debug=True)
4. Flask HTTP方法
默认情况下,Flask路由响应GET请求。但是,可以通过为route()装饰器提供方法参数来更改此首选项。
方法 | 描述 |
---|---|
GET | 以未加密的形式将数据发送到服务器。最常见的方法。 |
POST | 用于将HTML表单数据发送到服务器。POST方法接收的数据不由服务器缓存。 |
DELETE | 删除由URL给出的目标资源的所有当前表示。 |
PUT | 用上传的内容替换目标资源的所有当前表示。 |
HEAD | 和GET方法相同,但没有响应体。 |
from flask import Flask, make_response, request # 注意需导入 make_response
app = Flask(__name__)
@app.route('/get_request', methods=['GET'])
def get_request():
return 'GET请求'
@app.route('/post_request', methods=['POST'])
def post_request():
return 'POST请求'
@app.route('/delete_request', methods=['DELETE'])
def delete_request():
return 'DELETE请求'
@app.route('/put_request', methods=['PUT'])
def put_request():
return 'PUT请求'
@app.route('/head_request', methods=['HEAD'])
def head_request():
return 'HEAD请求'
app.run(host='0.0.0.0', port=8888, debug=True)
举个例子
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/')
def index():
return '欢迎来到主页'
@app.route('/login', methods=['POST'])
def login():
my_json = request.get_json()
user = my_json.get('user')
password = my_json.get('password')
if user == 'jack' and password == '123456':
# 前端和后端统一请求和返回的数据格式,返回json格式需要导入jsonify这个包
# return jsonify({
# "token": "sdohaohsdo",
# "birthday": "2002-4-16"
# })
return jsonify(token="sdohaohsdo", birthdat="2002-4-16")
app.run(host='0.0.0.0', port=8888, debug=True)
5. Cookie
Cookie以文本文件的形式存储在客户端的计算机上。其目的是记住和跟踪与客户使用相关的数据,以获得更好的访问者体验和网站统计信息。
设置cookie
默认有效期是临时cookie,浏览器关闭就失效,可以通过 max_age 设置有效期, 单位是秒
resp = make_response("success") # 设置响应体
resp.set_cookie("username", "username", max_age=1000)
获取cookie
通过request.cookies的方式, 返回的是一个字典
c = request.cookies.get("username")
删除cookie
这里的删除只是让cookie过期,并不是直接删除cookie
resp = make_response("del success") # 设置响应体
resp.delete_cookie("username")
from flask import Flask, make_response, request # 注意需导入 make_response
app = Flask(__name__)
@app.route('/set_cookie')
def set_cookie():
res = make_response('set success')
res.set_cookie('username', 'jack', max_age=3600)
return res
@app.route('/get_cookie')
def get_cookie():
cookie = request.cookies.get('username')
return cookie
@app.route('/del_cookie')
def del_cookie():
res = make_response('del success')
res.delete_cookie('username')
return res
app.run(host='0.0.0.0',port=8888,debug=True)
6. Session
与Cookie不同,Session(会话)数据存储在服务器上。会话是客户端登录到服务器并注销服务器的时间间隔。需要在该会话中保存的数据会存储在服务器上的临时目录中。
为每个客户端的会话分配会话ID。会话数据存储在cookie的顶部,服务器以加密方式对其进行签名。对于此加密,Flask应用程序需要一个定义的SECRET_KEY。
Session对象也是一个字典对象,包含会话变量和关联值的键值对。
设置密钥
app.secret_key = 'fkdjsafjdkfdlkjfadskjfadskljdsfklj'
设置username 会话变量
Session['username'] = 'admin'
要释放会话变量,请使用pop()方法
Session.pop('username',None)
一个简单的登录和退出登录的案例
from flask import Flask, request, session, jsonify, redirect
app = Flask(__name__)
# 记得设置密钥,不然会报错
app.secret_key = 'asdasdasdasdasdasd'
@app.route('/login', methods=['POST'])
def login():
_json = request.get_json()
username = _json.get('username')
password = _json.get('password')
if not all([username, password]):
return '缺少参数'
if username == 'jack' and password == '123456':
# 设置登录状态,在会话中定义一个标识,要导入session
session['token'] = 'asdasd'
return jsonify(msg="登录成功")
else:
return josnify("账号或密码错误,请重新登录!")
@app.route('/logout', methods=['GET'])
def logout():
# 清空会话
session.pop('token', None)
redirect('/checklogin')
return jsonify(msg="退出成功")
@app.route('/checklogin', methods=['GET'])
def checklogin():
flag = session.get('token')
if flag:
return jsonify(msg='已经登录')
else:
return jsonify(msg='请登录')
app.run(host='0.0.0.0', port=8888, debug=True)
总结
以上就是今天要讲的内容,希望对大家有所帮助!!!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/82831.html