使用WTForms的Flask的通用CRUD管理员?

时间:2011-12-12 03:18:27

标签: python admin web-frameworks flask wtforms

是否有基于WTForms的Flask的通用CRUD管理员?

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

是否有更多通用的,允许自动生成与ORM无关的管理员?

我需要它来提供以下功能

  • 一组项目的列表视图,支持内联编辑或批量操作会很棒!
  • 编辑一个特定项目的视图以进行添加/编辑

只需定义一些Form模型,实现迭代方法并自动生成完整的管理员。

是否有像这样的可重复使用的OSS项目?

3 个答案:

答案 0 :(得分:5)

我知道这是一个老问题,但现在可以使用Flask-admin并且非常棒。

非常易插拔,易于编写自己的处理程序来存储/处理数据(quick start)。

答案 1 :(得分:3)

我建议检查以下内容:

https://github.com/sbook/flask-mongoengine

https://github.com/coleifer/flask-peewee

你可以把sbook的烧瓶 - mongoengine和port coleifer的管理员从烧瓶 - peewee带到它。我不认为这太难了。 Coleifer的管理员因使用twitter-bootstrap获得额外积分,我可以告诉你他对问题的反应很快。

我和mongoengine在烧瓶和烧瓶中一起工作,两者都很棒。

答案 2 :(得分:2)

简短的回答是否定的,据我所知,redis或MongoDB没有自动生成的ORM。

现在进行更详细的解释:

为“固定”ORM存在CRUD生成而不是基于自由格式记录的数据存储的原因很简单:自由格式记录的本质使得创建模式变得很困难。

让我们看看redis,例如,每个记录都是哈希,例如键'user- {id}',包含用户名,年龄和registered_on字段。现在,当您向用户添加新字段“位置”时会发生什么?好吧,redis并不关心,你只需将字段添加到任何记录中,因为它们被修改,无需返回并将字段添加到每个哈希。很简单。

但是现在,你有了你的CRUD魔法,它试图找出要显示的字段。假设您决定查看第一条记录以查看哪些字段存在,但如果user-1缺少新的“location”字段,该怎么办?现在CRUD不会生成它。

此外,由于redis将每个值存储为字符串,因此CRUD不会知道'age'例如只接受整数,registered_on实际上是ISO格式的日期字符串。

哦,但是你说,MongoDB有数据类型!当然,假设我们忽略每个记录容差的不同字段,假装我们每个记录有相同的字段集,那么可以在那里做一些自动CRUD吗?是的,你可以比Redis做得更好,因为例如日期类型和整数类型,但即便如此也存在一些差异。假设你有一个字符串值。你怎么知道这个字符串值是需要多行输入(textarea)还是单行(输入类型=文本),或者甚至只能从几个选项的下拉列表中选择?

因此,对于许多自由格式类型真正做理论CRUD的唯一方法是,如果您事先为每个记录定义了“模式”(通过表单定义可能?),并且可能实现某种类型接口类/合同允许CRUD工具列出记录以检索对象,按键检索单个记录,更新/创建记录以及按键删除单个记录。

这种理论上的“可插拔”CRUD工具真的很酷,我很乐意看到有人接受它。