我正在 python 中构建一个表单类,用于生成和验证 HTML 表单。每个字段都有一个关联的小部件,用于定义字段的呈现方式。
创建小部件时,会传入一个(默认)值,以便它知道第一次渲染时要显示的内容。提交表单后,会要求小部件提供一个值。我将其委托(delegate)给小部件,而不是仅仅从 POST 数据中获取它,因为小部件可能包含多个 HTML 输入(想想月/日/年选择器)。只有小部件知道如何将它们组合成一个值。
问题是,我不知道是否应该让小部件始终接受字符串,并始终返回字符串以保持一致性,或者接受并返回与其目的一致的数据类型(即,日期选择器可能应该返回 DateTime 对象)。
我的形式类(class)背后的理念是“混合搭配”。您可以选择想要的小部件,以及想要在其上运行的验证器/格式化器/转换器。我想这有助于“使用字符串”并让开发人员决定数据类型,但是......我想不出一个好的但是。您预计这种方法会出现任何问题吗?
最佳答案
虽然简单地传递字符串似乎是一个有用的想法,但我认为您会发现它并不像您希望的那样工作。
考虑一下日期示例 - 不要传递 date
对象,而是传递 "2010-01-01"格式的
。为了使用该数据,该类的每个用户不仅需要知道它是表示日期的 str
str
,而且还需要知道该字符串的格式是什么。换句话说,你什么也没有得到。更糟糕的是,您无法将 datetime
对象传递到小部件中(除非您采取额外的步骤来处理这种情况)。
验证器或格式化程序问题并不像您想象的那么严重;您多久需要验证一个不代表日期的字符串,就好像它是一个日期一样?
关于python - 我的小部件应该接受/返回什么数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3169096/