有没有基于WTForms的烧瓶通用CRUD管理员?
目前我们正在构建一个混合的后端系统,管理员必须从不同的源、MongoDB、Redis、ini文件、ENVIRON等收集大量数据。为每个源编写特定的管理视图似乎是浪费时间,但是所有Flask管理或WTForms管理解决方案都基于某种固定的ORM,例如MongoEngine、AppEngine数据存储,SQLAchemy等
是否还有其他通用的允许自动生成ORM不可知的管理?
我需要它提供以下功能
只需定义一些表单模型,实现一个迭代方法,并自动生成一个成熟的管理员。
有类似这样的可重用OSS项目吗?
我知道这是一个老问题,但现在烧瓶管理是可用的,是相当棒。
可插入性强,易于编写自己的处理程序来存储/处理数据(quick start)。
简短的回答是不,据我所知,没有为redis或MongoDB自动生成ORM。
现在来详细解释一下:
之所以存在针对“固定”ORM而不是基于自由格式记录的数据存储的CRUD生成,原因很简单:自由格式记录的本质使得创建模式非常困难。
例如,让我们看看redis,假设每条记录都是一个散列,例如,key'user-{id},字段username、a g e和registered。现在,向用户添加新字段“location”时会发生什么情况?好吧,redis不在乎,只要在修改记录时将字段添加到任何记录中,就不需要返回并将字段添加到每个散列中。很简单。
但现在,你有你的CRUD魔法,它试图找出什么领域显示。假设您决定查看第一条记录以查看哪些字段有效,但如果user-1缺少新的“location”字段呢?现在积垢不会产生它。
此外,由于redis将每个值存储为一个字符串,CRUD不会知道“age”例如只接受一个整数,而注册的\u on实际上是一个ISO格式的日期字符串。
哦,但是你说,MongoDB有数据类型!当然,假设我们忽略每个记录允许的不同字段,假设每个记录有相同的字段集,那么可以在那里执行一些automagic CRUD吗?嗯,是的,你可以做得比Redis好一点,因为有一个日期类型和整数类型,但即使在那时也有一些差异。假设你有一个字符串值。如何知道该字符串值是需要多行输入(textarea)还是单行输入(input type=text),甚至只能从几个选项的下拉列表中选择?
因此,真正为许多自由形式类型做理论CRUD的唯一方法是预先定义“schema”(可能通过表单定义?)对于每个记录,可能实现了某种接口类/协定,允许CRUD工具列出记录以检索对象、按键检索单个记录、更新/创建记录以及按键删除单个记录。
这样一个理论上的“可插拔”CRUD工具会非常酷,我很想看到有人接受它。
我建议检查一下:
https://github.com/sbook/flask-mongoengine
https://github.com/coleifer/flask-peewee
你可以把sbook的flask mongoengine和port coleifer的管理员从flask peewee带到它。我不认为这会太难。Coleifer的管理员使用twitter bootstrap获得了额外的积分,我可以告诉你,他对问题非常敏感。
我和mongoengine一起在烧瓶上工作过,还有烧瓶小便器,两者都很棒。
相关问题 更多 >
编程相关推荐