打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python Flask中的CRUD生成利器
userphoto

2024.04.12 浙江

关注

引言

在提供丰富的库支持构建REST API方面,Flask生态系统从不缺席。然而,开发过程中往往需重复编写大量的创建(Create)、读取(Read)、更新(Update)、删除(Delete)——简称CRUD——操作的端点。传统方法需要开发者手动实现每个端点,无疑增加了工作量。

Flask-Muck的出现,优雅解决了上述问题。它不仅能够与生产环境中那些必要的非标准端点和谐共处,还在 Flask/SQLAlchemy 技术栈上添加翅膀,以声明性和模块化的方法取代大片的模板代码。

Flask-Muck的魔力

以不到十行的代码,Flask-Muck就能为资源生成一套具备完整特性的标准CRUD操作端点。这样的简约之美,在程序猿的世界里等同于凝聚时间与智慧的艺术作品。以下便是Flask-Muck如何在几行代码内展开画卷的示范:

class MyModelApiView(FlaskMuckApiView): api_name = 'my-model' # Rest of the magic...

利用 Flask-Muck,您的Flask应用能够快速实现包括数据创建、查询、更新等功能的API端点,而无需层层深入底层实现。

起步:搭建Flask应用

构建RESTful API的旅程始于创建最基本的Flask应用。而Flask-Muck使得这一过程极为简单。配置 SQL 和 SQLAlchemy 之后,您可以开始定义数据库模型。例如,一个待办事项的模型可能如下所示:

class TodoModel(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    text = db.Column(db.String, nullable=False)

数据模型与架构

在Flask项目中,模型定义了数据库中的表结构。而架构(Schema)则是Marshmallow提供的一种定义请求和响应数据结构的方法。这两者共同作用下,配合Flask-Muck,可以显著提高开发效率,缩短从搭建到上线的周期。视图与蓝图Flask中的视图负责处理HTTP请求。而蓝图(Blueprint)可以看作是组织视图的容器。在Flask-Muck中,你可以使用蓝图来组织和注册视图逻辑,如下所示:

api_blueprint = Blueprint('v1_api', __name__, url_prefix='/api/v1/') class TodoApiView(FlaskMuckApiView): # Rest of the logic...

通过继承 FlaskMuckApiView 并注册到蓝图,一个功能齐全的CRUD API便闪电般完成了。

最后一步:启动服务

最后,仅通过简单的命令就可以让你的Flask应用跑起来:

if __name__ == '__main__':
    app.run(debug=True)

你的API搭建好了,接下来通过Curl命令或者Postman等工具与之交互,验证它的功能。你可以尝试创建一个待办事项,列出所有现有的待办事项,甚至更新和删除它们。

结论

Flask-Muck作为一个crud框架,赋予了开发者迅速搭建CRUD API的能力,它勾勒了一个干净、高效的编程体验。你现在可以访问其GitHub仓库,浏览文档,查看示例,甚至探索嵌套资源、细化端点等更高级的功能。如果这篇文章对你的Flask之旅有所帮助,请不吝点赞收藏,将 Flask-Muck 添加至你的工具箱,让编码再次成为一种享受与创造。祝你在构建RESTful API的道路上一切顺利。如果您对我的文章感兴趣不妨了解下我的技术专栏,里面包含了非常多 python 实用技巧。

一个完整的 todo app代码示例:

import marshmallow as ma from flask import Flask, Blueprint from flask_muck import FlaskMuckApiView from flask_sqlalchemy import SQLAlchemy from marshmallow import fields as mf from sqlalchemy.orm import DeclarativeBase app = Flask(__name__) class Base(DeclarativeBase): pass db = SQLAlchemy(model_class=Base) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///todo_example.db' db.init_app(app) class TodoModel(db.Model): id = db.Column(db.Integer, primary_key=True, autoincrement=True) text = db.Column(db.String, nullable=False) class TodoSchema(ma.Schema): id = mf.Integer(required=True, dump_only=True) text = mf.String(required=True) api_blueprint = Blueprint('v1_api', __name__, url_prefix='/api/v1/') class TodoApiView(FlaskMuckApiView): session = db.session api_name = 'todos' Model = TodoModel ResponseSchema = TodoSchema CreateSchema = TodoSchema PatchSchema = TodoSchema UpdateSchema = TodoSchema searchable_columns = [TodoModel.text] TodoApiView.add_rules_to_blueprint(api_blueprint) app.register_blueprint(api_blueprint) if __name__ == '__main__': with app.app_context(): db.create_all() app.run(debug=True)
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
AutoLine源码分析之Flask初始化模块
Python Flask Restful token验证
flask 与 flask_migrate的使用
Flask搭建ES搜索引擎(二)
Flask SQLAlchemy 之 操作数据准备
python:Fastapi - SQL(关系)数据库
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服