为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

米琪卡哇伊 2021-03-21 12:59:10
我坚信后端与前端之间紧密耦合的异端思想:我希望在生成用户界面时自动利用有关后端的现有隐式知识。例如,如果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应用程序框架中哪一个最不适合?
查看完整描述

3 回答

?
饮歌长啸

TA贡献1951条经验 获得超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是为了国际化。


查看完整回答
反对 回复 2021-03-22
?
杨魅力

TA贡献1811条经验 获得超6个赞

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


查看完整回答
反对 回复 2021-03-22
  • 3 回答
  • 0 关注
  • 234 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信