我堅信后端與前端之間緊密耦合的異端思想:我希望在生成用戶界面時自動利用有關后端的現有隱式知識。例如,如果VARCHAR列的最大長度為20個字符,則GUI應該會自動限制用戶在相關的表單字段中鍵入20個以上的字符。我對要定義我的數據庫表的ORM懷有強烈的反感,或者基于某種駭客,因為ORM,每個表都需要有額外的數字ID列。我對Python數據庫框架進行了一些研究,我認為可以得出結論,SQLAlchemy最適合我的想法?,F在,我需要找到一個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是為了國際化。
添加回答
舉報
0/150
提交
取消