Tro*_*vin 11 python sql coupling metadata data-driven
我坚信后端和前端之间紧密耦合的异端思想:我希望在生成用户界面时自动使用有关后端的现有隐含知识.例如,如果VARCHAR列的最大值为20个字符,则GUI应自动约束用户在相关表单字段中键入超过20个字符.
我对想要定义我的数据库表的ORM有强烈的反感,或者基于某些hack,因为ORM,每个表都需要有额外的数字ID列.
我已经看了一下Python数据库框架,我想我可以断定SQLAlchemy最适合我的心态.
现在,我需要找到一个自然适合SQLAlchemy(或同等版本)的Web应用程序框架,甚至可能还有我对耦合的兴趣.使用"Web应用程序框架",我的意思是产品/项目,如Pyhons,Django,TurboGears,web2py等.
例如,它理想情况下应该能够:
所有这些都应该动态发生,因此表调整会自动反映在前端 - 可能是使用缓存机制,因此所有模型内省都不会扼杀性能.换句话说,我不想在我的数据库中仔细定义XML文件(或类似文件)中重复我的模型定义.
是否存在Python(或任何语言)的框架?如果不是:如果我自己添加部分上述功能,那么几个Python Web应用程序框架中哪一个最不会受到影响?
web2py可以满足您的大部分需求:
基于字段类型及其验证器,它将使用适当的小部件呈现字段.你可以覆盖
db.table.field.widget=...
Run Code Online (Sandbox Code Playgroud)
并使用第三方小部件.
web2py有js阻止用户在整数字段中输入非整数或在双字段中输入非double.时间,日期和日期时间字段有自己的选择器.这些js验证与(而非代替)服务器端验证一起工作.
有IS_EMPTY_OR(...)验证器.
DAL可以防止SQL注入,因为当进入数据库时,转发会被转义.
web2py会阻止XSS,因为在{{= variable}}中,'variable'会被转义,除非另有说明{{= XML(variable)}}或{{= XML(variable,sanitize = True)}}
例如,错误消息是验证器的参数
db.table.field.requires=IS_NOT_EMPTY(error_message=T('hey! write something in here'))
Run Code Online (Sandbox Code Playgroud)
T代表国际化.