est*_*est 5 python admin web-frameworks flask wtforms
是否有基于WTForms的Flask的通用CRUD管理员?
目前我们正在构建一个混合后端系统,其中管理员必须CRUD来自各种来源,MongoDB,Redis,ini文件,ENVIRON等的大量数据.为每个数据写入特定的管理视图似乎是浪费时间,但所有Flask管理员或WTForms管理解决方案基于某种固定的ORM,例如MongoEngine,AppEngine Datastore,SQLAchemy等.
是否有更多通用的,允许自动生成ORM无关的管理员?
我需要它来提供以下功能
只需定义一些Form模型,实现迭代方法并自动生成完整的管理员.
是否有像这样的可重复使用的OSS项目?
简而言之,答案是否定的,据我所知,redis 或 MongoDB 没有自动生成 ORM。
现在进行更详细的解释:
存在“固定”ORM 的 CRUD 生成而不是基于自由格式记录的数据存储的原因很简单:自由格式记录的本质使得创建模式变得困难。
让我们以 Redis 为例,假设每条记录都是一个哈希值,例如键“user-{id}”,其中包含字段 username、age 和 Registered_on。现在,当您向用户添加新字段“位置”时会发生什么?好吧,redis 并不关心,您只需在修改记录时将字段添加到任何记录中,无需返回并将字段添加到每个哈希中。够简单的。
但现在,您拥有了 CRUD 魔法,它会尝试找出要显示的字段。假设您决定查看第一条记录以查看存在哪些字段有效,但如果 user-1 缺少新的“位置”字段怎么办?现在 CRUD 不会生成它。
此外,由于 Redis 将每个值存储为字符串,因此 CRUD 不会知道“age”仅接受整数,而 Registered_on 实际上是 ISO 格式的日期字符串。
哦,但是你说,MongoDB 有数据类型!当然,假设我们忽略每条记录允许的不同字段,假装我们每条记录具有相同的字段集,那么可以在那里执行一些自动 CRUD 吗?是的,您将能够比 Redis 做得更好一点,因为有日期类型和整数类型,但即使这样也存在一些差异。假设您有一个字符串值。您如何知道该字符串值是否需要多行输入(文本区域)或单行(输入类型=文本),或者甚至只能从几个选项的下拉选择中获得?
因此,真正对许多自由格式类型进行理论上的 CRUD 的唯一方法是,如果您提前为每个记录定义“模式”(可能通过表单定义?),并且可能实现某种接口类/contract 允许 CRUD 工具列出记录以检索对象、按键检索单个记录、更新/创建记录以及按键删除单个记录。
这样一个理论上的“可插入”CRUD 工具真的很酷,我很乐意看到有人采用它。