猿问

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

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

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

我对Python数据库框架进行了一些研究,我认为可以得出结论,SQLAlchemy最适合我的想法。

现在,我需要找到一个Web应用程序框架,该框架自然适合SQLAlchemy(或等效版本),甚至适合我的耦合需求。“ Web应用程序框架”是指产品/项目,例如Pyhons,Django,TurboGears,web2py等。

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

  • 如果被告知这样做,则自动为输入给定列的数据选择合适的表单小部件;例如,如果该列具有指向具有10个不同值的列的外键,则小部件应将10个可能的值显示为下拉列表

  • 自动生成的javascript表单验证代码,如果将字符串输入到将要在INTEGER列中结束的字段中,则该代码将为最终用户提供快速错误反馈

  • 自动生成日历小部件以获取将在DATE列中显示的数据

  • 作为JavaScript的NOT NOT NULL约束,它会抱怨相关输入字段中的数据为空或仅包含空格

  • 生成与相关(简单)CHECK约束匹配的javascript验证代码

  • 通过使用准备好的语句和/或验证外部派生的数据,可以轻松地避免SQL注入

  • 通过在适当的时候自动转义传出的字符串,从而轻松避免跨站点脚本编写

  • 在违反约束的情况下,使用约束名称来生成一些用户友好的错误消息

所有这些都应该动态发生,因此表调整会自动反映在前端(可能使用缓存机制),以便所有模型自省都不会降低性能。换句话说,当数据库中已经仔细定义了模型定义时,我不想在XML文件中重复模型定义。

是否存在适用于Python(或任何语言)的框架?如果不是这样:如果我自己添加上述功能的一部分,那么几个Python Web应用程序框架中哪一个最不适合?


米琪卡哇伊
浏览 235回答 3
3回答

饮歌长啸

web2py可以满足您的大部分要求:根据字段类型及其验证器,它将使用适当的窗口小部件呈现该字段。您可以使用db.table.field.widget=...并使用第三方小部件。web2py具有js来阻止用户在整数字段中输入非整数或在double字段中输入非double。时间,日期和日期时间字段具有自己的选择器。这些js验证可与(而非代替)服务器端验证一起使用。有IS_EMPTY_OR(...)验证器。DAL防止SQL注入,因为一切都在进入DB时被转义了。web2py防止XSS,因为除非另行指定,否则{{= XML(variable)}}或{{= XML(variable,sanitize = True)}}错误消息是验证器的参数,例如db.table.field.requires=IS_NOT_EMPTY(error_message=T('hey! write something in here'))T是为了国际化。

杨魅力

您应该看看django,尤其是它的newforms和admin模块。newforms模块为用户自动生成错误消息/页面提供了很好的可能性来进行服务器端验证。也可以添加ajax验证
随时随地看视频慕课网APP

相关分类

Python
我要回答