自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Flask 中非常受歡迎的五個擴展插件

開發(fā) 前端
Flask-SQLAlchemy 直接在SQLAlchemy的基礎(chǔ)上封裝了一層,簡化了配置以及SQLAlchemy庫的導入路徑。

1. Flask-Admin

Django中有個殺手锏的功能就是自帶Admin面板,所有數(shù)據(jù)都可以通過Admin后臺來操作, Flask-Admin 就是一個功能和Django-Admin非常類似的庫,有了它你再也不需要直接去數(shù)據(jù)庫查數(shù)據(jù)改數(shù)據(jù)了。

Github地址:https://github.com/flask-admin/flask-admin

2.Flask-SQLAlchemy

Flask-SQLAlchemy 直接在SQLAlchemy的基礎(chǔ)上封裝了一層,簡化了配置以及SQLAlchemy庫的導入路徑。

# config.py
SQLALCHEMY_DATABASE_URI = ''


# app.py
def create_app(config_name=None, app_name=None):
"""使用工廠模式創(chuàng)建app"""
if not app_name:
app_name = __name__
app = Flask(app_name)

from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
db.init_app(app)

# model.py
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String, unique=True, nullable=False)
email = db.Column(db.String, unique=True, nullable=False)


db.session.add(User(username="Flask", email="example@example.com"))
db.session.commit()

3.Flask-Migrate

Flask-migrate 是一個SQLAlchemy 數(shù)據(jù)庫升級遷移工具,基于Alembic實現(xiàn),它提供了一系列命進行數(shù)據(jù)庫升級撤回操作。

from flask_alembic import Alembic

alembic = Alembic()
alembic.init_app(app)

4.Flask-JWT-Extended

前后端分離項目基本都是使用JWT來做用戶認證,這是一個用來實現(xiàn)JWT功能的擴展,提供了很多配置參數(shù),非常靈活,直接在config中配置就可以,省去很多造輪子的麻煩。

from flask_jwt_extended import create_access_token
from flask_jwt_extended import get_jwt_identity
from flask_jwt_extended import jwt_required
from flask_jwt_extended import JWTManager
jwt = JWTManager(app)


# view.py
@app.route("/login", methods=["POST"])
def login():
username = request.json.get("username", None)
password = request.json.get("password", None)
if username != "test" or password != "test":
return jsonify({"msg": "Bad username or password"}), 401
# 賬號密碼正確就創(chuàng)建token返回給前端
access_token = create_access_token(identity=username)
return jsonify(access_token=access_token)


@app.route("/users", methods=["GET"])
@jwt_required()
def users():
# 這是一個需要用戶登錄后才可以訪問的接口,直接裝飾器jwt_required()修飾就可以,token校驗不通過時會直接攔截。

# 這里的identity返回的對象取決于前面創(chuàng)建token的方法傳的參數(shù)identtiy是什么
current_user = get_jwt_identity()
return jsonify(logged_in_as=current_user), 200

還可以通過實現(xiàn)user_loader_callback_loader回調(diào)獲得 get_current_user 對象

@jwt_ext.user_loader_callback_loader
def loader_user_callback(identity):
return User.query.filter_by(username=identity).first()

特別是4.0還實現(xiàn)了白名單功能,可直接對用戶進行登錄限制。

5.Flask-Limiter

Flask-Limiter 用于做接口頻率限制的,它可以靈活基于不同資源來限制請求的次數(shù),例如你可以對整個app做限制,頁可以對某個blueprint限制,或者是對路由做限制,還支持自定義配置。

from flask import Flask
from flask_limiter import Limiter
from flask_limiter.util import get_remote_address

app = Flask(__name__)
limiter = Limiter(
app,
key_func=get_remote_address,
default_limits=["200 per day", "50 per hour"]
)
@app.route("/slow")
@limiter.limit("1 per day")
def slow():
return ":("

@app.route("/medium")
@limiter.limit("1/second", override_defaults=False)
def medium():
return ":|"

本文轉(zhuǎn)載自微信公眾號「Python之禪」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系Python之禪公眾號。

責任編輯:武曉燕 來源: Python之禪
點贊
收藏

51CTO技術(shù)棧公眾號