我坚信后端和前端之间紧密耦合的异端思想:我希望在生成用户界面时自动使用有关后端的现有隐含知识。例如,如果 VARCHAR 列最多包含 20 个字符,则 GUI 应自动限制用户在相关表单字段中键入超过 20 个字符。
而且我对想要定义我的数据库表的 ORM 有强烈的反感,或者基于一些 hack,因为 ORM,每个表都需要有额外的数字 ID 列。
我对 Python 数据库框架进行了一些研究,我认为我可以得出结论,SQLAlchemy 最适合我的心态。
现在,我需要找到一个 Web 应用程序框架,它自然地适合 SQLAlchemy(或等效的),甚至可能适合我对耦合的胃口。“Web 应用程序框架”是指产品/项目,例如 Pyhons、Django、TurboGears、web2py 等。
例如,理想情况下它应该能够:
- 如果被告知这样做,则自动为输入给定列的数据选择合适的表单小部件;例如,如果该列具有与具有 10 个不同值的列的外键,则小部件应将 10 个可能的值显示为下拉列表
- 自动生成 javascript 表单验证代码,如果将字符串输入到即将出现在 INTEGER 列中的字段等,则会向最终用户提供快速错误反馈
- 为数据自动生成一个日历小部件,该小部件将在 DATE 列中结束
- 提示 NOT NULL 约束作为 javascript,它抱怨相关输入字段中的空数据或纯空格数据
- 生成与相关(简单) CHECK-constraints匹配的 javascript 验证代码
- 通过使用准备好的语句和/或验证外部派生数据,可以轻松避免 SQL 注入
- 通过在适当时自动转义传出的字符串,可以轻松避免跨站点脚本
- 使用约束名称来生成对用户友好的错误消息,以防违反约束
所有这些都应该动态发生,因此表格调整会自动反映在前端 - 可能使用缓存机制,因此所有模型自省都不会影响性能。换句话说,我不想在 XML 文件(或类似文件)中重复我的模型定义,因为它已经在我的数据库中仔细定义了。
Python(或任何语言,就此而言)是否存在这样的框架?如果不是:如果我要自己添加上述功能的一部分,那么几个 Python Web 应用程序框架中的哪一个将是最少的?