Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于紧密DB/GUI耦合的python web应用程序框架?_Python_Sql_Metadata_Coupling_Data Driven - Fatal编程技术网

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

用于紧密DB/GUI耦合的python web应用程序框架?,python,sql,metadata,coupling,data-driven,Python,Sql,Metadata,Coupling,Data Driven,我坚信后端和前端之间紧密耦合的异端思想:我希望在生成用户界面时自动利用关于后端的现有隐含知识。例如,如果VARCHAR列的最大长度为20个字符,则GUI应自动限制用户在相关表单字段中键入超过20个字符 我对ORM有强烈的反感,因为ORM想要定义我的数据库表,或者基于某种黑客攻击,因为ORM,每个表都需要额外的数字ID列 我已经研究了一些Python数据库框架,我想我可以得出结论,SQLAlchemy最适合我的想法 现在,我需要找到一个web应用程序框架,它自然地适合SQLAlchemy(或等效工

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

我对ORM有强烈的反感,因为ORM想要定义我的数据库表,或者基于某种黑客攻击,因为ORM,每个表都需要额外的数字ID列

我已经研究了一些Python数据库框架,我想我可以得出结论,SQLAlchemy最适合我的想法

现在,我需要找到一个web应用程序框架,它自然地适合SQLAlchemy(或等效工具),甚至可能适合我对耦合的兴趣。“web应用程序框架”指的是Pyhons、Django、TurboGears、web2py等产品/项目

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

  • 如果被告知要为输入给定列的数据自动选择合适的表单小部件;e、 例如,如果列有一个外键指向一个包含10个不同值的列,则小部件应将10个可能的值显示为下拉列表
  • 自动生成javascript表单验证代码,如果在一个字段中输入了一个字符串,而该字段将以整数列结束,则该代码将为最终用户提供快速错误反馈,等等
  • 自动为数据生成一个日历小部件,该数据将在日期列中结束
  • 提示非空约束作为javascript,它抱怨相关输入字段中的数据为空或只有空格
  • 生成与相关(简单)检查约束匹配的javascript验证代码
  • 通过使用预先准备好的语句和/或外部派生数据的验证,可以轻松地避免SQL注入
  • 通过在适当时自动转义传出字符串,可以轻松地避免跨站点脚本编写
  • 使用约束名称在违反约束时生成用户友好的错误消息
所有这些都应该是动态发生的,因此表调整会自动反映在前端上——可能是通过缓存机制,这样所有的模型内省都不会影响性能。换句话说,我不想在XML文件(或类似文件)中重复我的模型定义,因为它已经在我的数据库中仔细定义过了


Python(或任何语言)是否存在这样的框架?如果没有:如果我自己添加上述功能的一部分,那么在几个Python web应用程序框架中,哪一个对我的影响最小?

您应该看看django,尤其是它的功能和模块。newforms模块提供了一种很好的可能性,可以通过为用户自动生成错误消息/页面来进行服务器端验证。添加ajax验证也是

我认为Django模型不支持复合主键(请参阅)。但也许你可以在Django中使用SQLAlchemy?A表示您可以。我没有用过Django,所以我不知道

我建议你看看:

  • ,包括
  • 。Catwalk是TurboGears 1.0的一个应用程序,它使用SQLObject,而不是SQLAlchemy。也看看这个和
  • 。还使用SQLObject
我对上述任何项目都没有深入的了解。我只是在尝试添加一些类似于我自己的一个应用程序的东西,正如原始问题所提到的。上面的列表只是我偶然发现的有趣项目的列表

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


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

当前默认使用,但您可以将其与一起使用。他们说TurboGears(1.1)的下一个主要版本默认使用SQLAlchemy。

我知道你要求一个框架,但我想我会让你知道我在这里得到了什么。我刚刚经历了将公司的web应用程序从自定义内部ORM层转换为sqlAlchemy的过程,因此我远非专家,但我想到的是,sqlAlchemy具有它从数据库映射的所有属性的类型,所以为什么不使用它来帮助将正确的html输出到页面上呢。因此,我们在后端使用sqlAlchemy,在前端使用Cheetah模板,但两者之间的一切基本上都是我们自己的

我们从来没有找到一个框架,能够完全做到我们想要的而不妥协,并且更愿意得到所有适合我们的部分,并为我们自己编写胶水

第一步。对于每个数据类型sqlAlchemy.types.INTEGER等,在html中添加一个额外的函数(或者许多函数可能是toHTMLReadOnly、toHTMLAdminEdit等等),然后让它返回html的模板,现在如果您只想吐出一整张表,您甚至不必关心显示的数据类型(作为猎豹模板或任何模板引擎)

步骤2

#对于$dbObject.c中的$field:

$field.name

#结束于

#对于dbObject.c中的$field:

$field.type.toHtml($field.name,$field.value)

#结束于

使用这个基本方法,并将pythons的内省扩展到它的潜力,在一个下午,我成功地为它创建了createreadupdate和delete代码
db.table.field.widget=...
db.table.field.requires=IS_NOT_EMPTY(error_message=T('hey! write something in here'))