首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于紧密DB/GUI耦合的python web应用程序框架?

用于紧密DB/GUI耦合的python web应用程序框架?
EN

Stack Overflow用户
提问于 2008-09-04 08:53:58
回答 5查看 2.8K关注 0票数 11

我坚信后端和前端之间紧密耦合的异端思想:我希望在生成用户界面时自动利用关于后端的现有隐含知识。例如,如果VARCHAR列的最大值为20个字符,则GUI应自动限制用户在相关表单字段中键入超过20个字符。

我对ORM非常反感,因为ORM想要定义我的数据库表,或者是基于某些黑客,因为ORM的存在,每个表都需要有额外的数字ID列。

我研究了一下Python数据库框架,我认为我可以得出结论,SQLAlchemy最适合我的心态。

现在,我需要找到一个与SQLAlchemy (或类似的)自然相适应的web应用程序框架,甚至可能符合我对耦合的兴趣。使用"web应用程序框架“,我指的是产品/项目,如Pyhons、Django、TurboGears、web2py等。

例如,理想情况下,它应该能够:

  • 自动为输入给定列的数据选择合适的表单小部件;例如,如果该列具有10个不同值的列的外键,则小部件应将10个可能的值显示为下拉列表。
  • 自动生成javascript表单验证代码,如果将字符串输入即将以整数列结尾的字段,则将为最终用户提供快速错误反馈。
  • 自动生成数据的日历小部件,该数据将在日期列中结束。
  • 提示非空约束作为javascript,它抱怨相关输入字段中的空数据或空白数据。
  • 生成与相关(简单) CHECK-constraints匹配的javascript验证代码
  • 通过使用准备好的语句和/或外部派生数据的验证,使易于避免SQL注入
  • 通过适当时自动转义传出字符串,使易于避免跨站点脚本
  • 使用约束名称来生成一些用户友好的错误消息,以防违反了generate。

所有这些都应该是动态的,因此表调整会自动反映在前端--可能是通过缓存机制实现的,这样所有的模型内省都不会影响性能。换句话说,当我的数据库中已经仔细定义了模型定义时,我不想在XML文件(或类似文件)中重复我的模型定义。

Python是否存在这样的框架(或者任何语言)?如果不是:如果我自己添加上述特性的一部分,那么几个Python应用程序框架中哪一个会是最少的呢?

EN

回答 5

Stack Overflow用户

发布于 2008-10-13 17:31:38

web2py完成了您所要求的大部分内容:

基于字段类型及其验证器,它将使用适当的小部件呈现字段。您可以用

代码语言:javascript
复制
db.table.field.widget=...

并使用第三方小部件。

web2py让js阻止用户在整数字段中输入非整数或在双字段中输入非双值。时间、日期和日期时间字段有自己的选择器。这些js验证用于(而不是替代)服务器端验证。

IS_EMPTY_OR(...)验证器。

DAL防止SQL注入,因为在DB中任何事情都是转义的。

web2py阻止XSS,因为在{=变量}中,除非另有指定{=XML(变量)}或{{=XML(变量,sanitize=True)}},否则“变量”将被转义。

例如,错误消息是验证器的参数。

代码语言:javascript
复制
db.table.field.requires=IS_NOT_EMPTY(error_message=T('hey! write something in here'))

T代表国际化。

票数 5
EN

Stack Overflow用户

发布于 2008-09-04 09:12:27

您应该看看django,特别是它的新形式管理员模块。newforms模块为用户自动生成错误消息/页面提供了一个很好的可能性,可以在服务器端进行验证。添加ajax验证也是可能

票数 3
EN

Stack Overflow用户

发布于 2008-09-04 09:42:10

我认为Django模型不支持复合主键(参见文档)。但是,您可以在Django中使用SQLAlchemy吗?谷歌搜索表示您可以。我没有使用Django,所以我不知道。

我建议你看看:

  • ToscaWidgets
  • DBSprockets,包括DBMechanic
  • 猫步。T型台是TurboGears 1.0的一个应用程序,它使用SQLObject,而不是SQLAlchemy。还可以查看这个博客帖子屏风
  • FastData。也使用SQLObject。
  • 形式炼金术
  • 朗姆酒

我对上述任何项目都没有任何深入的了解。我只是在尝试添加一些类似于我自己的应用程序的东西,正如最初的问题所提到的那样。上面的列表仅仅是我偶然发现的有趣项目的列表。

关于Python的web应用程序框架,我推荐TurboGears 2。不是说我有任何其他框架的经验,我只是喜欢TurboGears.

如果原问题的作者找到了一个有效的解决方案,请更新或回答这个线程。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档