【Python】快速上手 Flask

导读:本篇文章讲解 【Python】快速上手 Flask,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

【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

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!