基于pear-admin-flask 的 flask 使用教程

@bp.get(‘/’)
@authorize(“system:dept:main”, log=True)
def main():
return render_template(‘system/dept/main.html’)


然后 统一初始化 api. @ /pear-admin-flask/applications/view/system/\_\_init\_\_.py



from flask import Flask, Blueprint

from applications.view.system.dict import bp as dict_bp

system_bp = Blueprint(‘system’, name, url_prefix=‘/system’)

def register_system_bps(app: Flask):
# 在admin_bp下注册子蓝图
system_bp.register_blueprint(user_bp)


接下来就可以通过浏览器 GET http://ip:port/system/dept 访问到 pear-admin-flask/applications/view/system/dept.py 中接口函数.


#### 4. flask\_login 登陆管理,


a. 定义用户登陆函数 @ pear-admin-flask/applications/extensions/init\_login.py



@login\_manager.user\_loader
def load\_user(user_id):
    from applications.models import User
    user = User.query.get(int(user_id))
    return user

b. 登陆登出 @pear-admin-flask/applications/view/system/passport.py



from flask_login import current_user, login_user, login_required, logout_user

登录

@bp.post(‘/login’)
def login_post():

login_user(user, remember=remember)

登出

@bp.post(‘/logout’)
@login_required
def logout():
logout_user()
session.pop(‘permissions’)
return success_api(msg=“注销成功”)


c. 会话管理, 验证是否登陆,没有登陆就禁止访问, @pear-admin-flask/applications/common/utils/rights.py



from flask_login import login_required, current_user

@login_required # 登陆许可修饰器
@wraps(func)
def wrapper(*args, **kwargs):


#### 5. flask\_uploads 用于管理文件上传操作, @ pear-admin-flask/applications/extensions/init\_upload.py



导入

from flask_uploads import UploadSet, IMAGES

定义集合与路径

photos = UploadSet(‘photos’, IMAGES)

def init_upload(app: Flask):
# 关联 app
configure_uploads(app, photos)


使用 photos 在上传接口接收文件 @ pear-admin-flask/applications/view/system/file.py



上传接口

@bp.post(‘/upload’)
@authorize(“system:file:add”, log=True)
def upload_api():
if ‘file’ in request.files:
photo = request.files[‘file’]
mime = request.files[‘file’].content_type

    file_url = upload_curd.upload_one(photo=photo, mime=mime)
    res = {
        "msg": "上传成功",
        "code": 0,
        "success": True,
        "data":
            {"src": file_url}
    }
    return jsonify(res)
return fail_api()

#### 6. flask\_sqlalchemy 数据库管理


这个可以单独写一节, 主要是感觉数据库的内容挺多的,这里看看库的样例, 大致样式如下 @ pear-admin-flask/applications/models/admin\_user\_role.py



from applications.extensions import db

创建中间表

user_role = db.Table(
“admin_user_role”, # 中间表名称
db.Column(“id”, db.Integer, primary_key=True, autoincrement=True, comment=‘标识’), # 主键
db.Column(“user_id”, db.Integer, db.ForeignKey(“admin_user.id”), comment=‘用户编号’), # 属性 外键
db.Column(“role_id”, db.Integer, db.ForeignKey(“admin_role.id”), comment=‘角色编号’), # 属性 外键
)


不明白的可以留言讨论或者自行在百度即可.


#### 7. flask\_marshmallow 可将 SQLAlchemy 数据 转换为 RESTful API 格式 , 具体查看项目 内容 @ pear-admin-flask/applications/extensions/init\_sqlalchemy.py



from flask_sqlalchemy import SQLAlchemy
from flask_sqlalchemy.query import Query as BaseQuery
from flask_marshmallow import Marshmallow

重写 BaseQuery

class Query(BaseQuery):

def all_json(self, schema: Marshmallow().Schema):
return schema(many=True).dump(self.all())

def layui\_paginate(self):
    return self.paginate(page=request.args.get('page', type=int),
                         per_page=request.args.get('limit', type=int),
                         error_out=False)

def layui\_paginate\_json(self, schema: Marshmallow().Schema):
    """

返回dict
“”"
_res = self.paginate(
page=request.args.get(‘page’, type=int),
per_page=request.args.get(‘limit’, type=int),
error_out=False
)
return schema(many=True).dump(_res.items), _res.total, _res.page, _res.per_page

db = SQLAlchemy(query_class=Query)
ma = Marshmallow()


#### 8. flask\_migrate 提供数据库的版本管理等功能




#### 9. flask\_mail 提供邮件发送功能




#### 10. flask\_session 管理会话




#### 11. 我在使用 flask 的时候, 经常 flask\_restx 提供的一些方法, 供大家参考 @ [flask-restx 基于 flask 的 restful 风格的插件]( )



from flask import Flask
from flask_restx import Api, Resource

api = Api()

app = Flask(name)
api.init_app(app)

@api.route(‘/hello’,strict_slashes=False)
class HelloWorld(Resource):
def get(self):
# 如果使用模板的块,需要使用 make_response
# return make_response(render_template(‘index.html’, data=res), 200)

    # 使用 jsonify 是为了返回json数据的同时,相比于 json.dumps() 其会自动修改 content-type 为 application/json
    # 另外,如果使用 jsonify()的同时,还想自定义返回状态码,可以使用 make\_response(jsonify(data=data), 201)
    return jsonify({'hello': 'world'})

def post(self):
    pass

def put(self):
    pass

def delete(self):
    pass

if name == ‘__main__’:
app.run(debug=True)


也可以使用 flask\_restx 提供的参数校验.



from flask_restx import reqparse

def create_reqparse(args):
rp = reqparse.RequestParser()
for i in args:
rp.add_argument(i[0],**i[1])
return rp

create_annotation = create_reqparse([
[‘image_id’,{‘type’:int,‘required’:True,‘location’:‘json’}],
[‘category_id’,{‘type’:int,‘location’:‘json’}]])

@api.route(‘/’)
class AnnotatorData(Resource):
@api.expect(create_annotation)
def post(self):
args = create_annotation.parse_args()

 **自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**

![img](https://img-blog.csdnimg.cn/img_convert/032dabb70d8966fe71ac69d1f6bad5cf.png)

![img](https://img-blog.csdnimg.cn/img_convert/cd794a98306a01bb772e714146d6fe94.png)

![img](https://img-blog.csdnimg.cn/img_convert/30477efa2c9acf5779457058878c0548.png)

![img](https://img-blog.csdnimg.cn/img_convert/0867c7eaa0a5e78131b92a41321b5aa1.png)

![img](https://img-blog.csdnimg.cn/img_convert/6c361282296f86381401c05e862fe4e9.png)

![img](https://img-blog.csdnimg.cn/img_convert/9f49b566129f47b8a67243c1008edf79.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)**

1401c05e862fe4e9.png)

![img](https://img-blog.csdnimg.cn/img_convert/9f49b566129f47b8a67243c1008edf79.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)**

![](https://img-blog.csdnimg.cn/img_convert/57ba5b982523a02513e0b6e1155cbe0e.jpeg)
`pear-admin-flask`是一个基于Flask框架的轻量级后台管理界面生成工具,它能帮助开发者快速构建一个功能完善的管理后台。以下是使用`pear-admin-flask`的基本步骤: 1. **安装依赖**: - 首先确保你的Python环境中已经安装了Flask和相关库(如SQLAlchemy、Marshmallow等)。如果还没有,可以通过pip进行安装: ``` pip install Flask SQLAlchemy marshmallow flask-admin ``` 2. **初始化项目**: - 创建一个新的Flask项目并设置基本配置,包括数据库连接信息。 ```python from flask import Flask app = Flask(__name__) app.config['SECRET_KEY'] = 'your_secret_key' # 添加数据库相关配置 ``` 3. **引入pear-admin-flask**: - 从github或其他仓库克隆`pear-admin-flask`库到项目中,然后导入模块并初始化: ```python from pear_admin_flask import create_admin admin = create_admin(app) ``` 4. **模型映射**: - 定义你的数据模型(例如User、Course),并将它们与数据库表关联起来。使用`admin.register_model`注册模型给管理后台: ```python from models import User, Course admin.register(User) admin.register(Course) ``` 5. **运行应用**: - 启动你的Flask应用,这时访问`http://localhost:5000/admin/`应该能看到默认的后台界面,你可以开始自定义菜单、权限和页面布局了。 6. **定制UI**: - 使用`pear-admin-flask`提供的API和模板来自定义颜色方案、图标、菜单结构等,可以根据需求调整管理后台样式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值