Flask的一般积垢管理,带WTForms?

2024-04-25 08:59:39 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有基于WTForms的烧瓶通用CRUD管理员?

目前我们正在构建一个混合的后端系统,管理员必须从不同的源、MongoDB、Redis、ini文件、ENVIRON等收集大量数据。为每个源编写特定的管理视图似乎是浪费时间,但是所有Flask管理或WTForms管理解决方案都基于某种固定的ORM,例如MongoEngine、AppEngine数据存储,SQLAchemy等

是否还有其他通用的允许自动生成ORM不可知的管理?

我需要它提供以下功能

    太好了!
  • 编辑要添加/编辑的一个特定项目的视图

只需定义一些表单模型,实现一个迭代方法,并自动生成一个成熟的管理员。

有类似这样的可重用OSS项目吗?


Tags: 文件数据项目redis视图编辑烧瓶mongodb
3条回答

我知道这是一个老问题,但现在烧瓶管理是可用的,是相当棒。

可插入性强,易于编写自己的处理程序来存储/处理数据(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一起在烧瓶上工作过,还有烧瓶小便器,两者都很棒。

相关问题 更多 >