我坚信后端和前端之间紧密耦合的异端思想:我希望在生成用户界面时自动利用关于后端的现有隐含知识。例如,如果VARCHAR列的最大值为20个字符,则GUI应自动限制用户在相关表单字段中键入超过20个字符。
我对ORM非常反感,因为ORM想要定义我的数据库表,或者是基于某些黑客,因为ORM的存在,每个表都需要有额外的数字ID列。
我研究了一下Python数据库框架,我认为我可以得出结论,SQLAlchemy最适合我的心态。
现在,我需要找到一个与SQLAlchemy (或类似的)自然相适应的web应用程序框架,甚至可能符合我对耦合的兴趣。使用"web应用程序框架“,我指的是产品/项目,如Pyhons、Django、TurboGears、web2py等。
例如,理想情况下,它应该能够:
所有这些都应该是动态的,因此表调整会自动反映在前端--可能是通过缓存机制实现的,这样所有的模型内省都不会影响性能。换句话说,当我的数据库中已经仔细定义了模型定义时,我不想在XML文件(或类似文件)中重复我的模型定义。
Python是否存在这样的框架(或者任何语言)?如果不是:如果我自己添加上述特性的一部分,那么几个Python应用程序框架中哪一个会是最少的呢?
发布于 2008-10-13 17:31:38
web2py完成了您所要求的大部分内容:
基于字段类型及其验证器,它将使用适当的小部件呈现字段。您可以用
db.table.field.widget=...并使用第三方小部件。
web2py让js阻止用户在整数字段中输入非整数或在双字段中输入非双值。时间、日期和日期时间字段有自己的选择器。这些js验证用于(而不是替代)服务器端验证。
有IS_EMPTY_OR(...)验证器。
DAL防止SQL注入,因为在DB中任何事情都是转义的。
web2py阻止XSS,因为在{=变量}中,除非另有指定{=XML(变量)}或{{=XML(变量,sanitize=True)}},否则“变量”将被转义。
例如,错误消息是验证器的参数。
db.table.field.requires=IS_NOT_EMPTY(error_message=T('hey! write something in here'))T代表国际化。
发布于 2008-09-04 09:12:27
您应该看看django,特别是它的新形式和管理员模块。newforms模块为用户自动生成错误消息/页面提供了一个很好的可能性,可以在服务器端进行验证。添加ajax验证也是可能。
发布于 2008-09-04 09:42:10
我认为Django模型不支持复合主键(参见文档)。但是,您可以在Django中使用SQLAlchemy吗?谷歌搜索表示您可以。我没有使用Django,所以我不知道。
我建议你看看:
我对上述任何项目都没有任何深入的了解。我只是在尝试添加一些类似于我自己的应用程序的东西,正如最初的问题所提到的那样。上面的列表仅仅是我偶然发现的有趣项目的列表。
关于Python的web应用程序框架,我推荐TurboGears 2。不是说我有任何其他框架的经验,我只是喜欢TurboGears.
如果原问题的作者找到了一个有效的解决方案,请更新或回答这个线程。
https://stackoverflow.com/questions/43368
复制相似问题