我坚信后端与前端之间紧密耦合的异端思想:我希望在生成用户界面时自动利用有关后端的现有隐式知识。例如,如果VARCHAR列的最大值为20个字符,则GUI应该自动限制用户在相关的表单字段中键入20个以上的字符。
而且我对要定义数据库表的ORM表示强烈反对,或者基于某种骇客行为,因为ORM,每个表都需要有额外的数字ID列。
我对Python数据库框架进行了一些研究,我认为可以得出结论,SQLAlchemy最适合我的想法。
现在,我需要找到一个Web应用程序框架,该框架自然适合SQLAlchemy(或等效版本),甚至适合我的耦合需求。“ Web应用程序框架”是指产品/项目,例如Pyhons,Django,TurboGears,web2py等。
例如,理想情况下,它应该能够:
如果被告知要为输入给定列的数据自动选择合适的表单小部件;例如,如果该列具有指向具有10个不同值的列的外键,则小部件应将10个可能的值显示为下拉列表 自动生成javascript表单验证代码,如果将字符串输入到将要在INTEGER列中结束的字段中,则该代码将为最终用户提供快速错误反馈 自动生成日历小部件以获取将在DATE列中显示的数据 提示NOT NULL约束为javascript,它抱怨相关输入字段中的数据为空或仅包含空格 生成与相关(简单)CHECK约束匹配的javascript验证代码 通过使用准备好的语句和/或验证外部派生的数据,可以轻松避免SQL注入 通过在适当的时候自动转义传出的字符串,可以轻松地避免跨站点脚本编写 利用约束名称来生成一些用户友好的错误消息,以防违反约束 所有这一切都应该动态发生,因此表调整会自动反映在前端(可能使用缓存机制),以便所有模型自省不会破坏性能。换句话说,当我已经在数据库中仔细定义了模型定义时,我不想在XML文件中重复模型定义。
是否存在适用于Python(或任何语言)的框架?如果不是这样:如果我自己添加上述功能的一部分,那么几个Python Web应用程序框架中哪一个最不适合?
web2py完成了你提出的大部分内容: 基于字段类型及其验证器,它将使用适当的小部件呈现字段。你可以覆盖
db.table.field.widget=...
并使用第三方小部件。 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'))
T代表国际化。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。