【发布时间】:2010-01-22 04:28:29
【问题描述】:
我想听听您对此的看法。
我有一个 django 应用程序,从模型中获得的数据是粗糙的。为了使它们更好,我必须做一些可能复杂但不多的操作。 例如,假设您有一个模型,其中美国州被编码为两个字母代码。在 html 渲染中,您希望向用户呈现完整的状态名称。我在另一个数据库表中有一个对应的两个字母-> 全名。假设我不想执行连接。
我有两个选择
- 让视图代码从模型中提取双字母信息,然后对第二个表执行查询,获取全名,并将其放入上下文中。模板呈现完整的状态名称。
- 创建一个自定义过滤器,该过滤器接受两个字母的代码、命中数据库并返回全长名称。让视图将两个字母的信息传递到上下文中,并将管道放入过滤器的模板中。过滤器将两个字母的代码呈现为一个完整的字符串。
现在,这些解决方案看起来是等价的,但从设计的角度来看,它们不可能是等价的。我有点怀疑在过滤器责任和视图责任之间划清界限。解决方案 1 正在执行解决方案 2 中的过滤器任务,它只是集成在视图本身中。当然,如果我必须在同一页面内多次调用过滤器,解决方案 1 可能更快(除非过滤器输出被记忆)。
您对设计、正确编码和性能有何看法?
【问题讨论】: