使用模板标签来提取数据是否违反了关注点?

时间:2011-04-27 02:22:59

标签: django separation-of-concerns

我想知道django generic flatblocks app是否违反了关注点分离原则 对于那些不了解应用程序的人,它会根据slug或id和模型类型提取数据 例如:

{% gblock "about" for "cms.FlatPageWithsummary" into "about" %}

一方面,它标记了内容应该出现的位置,因此从设计者的角度来看是有意义的,但另一方面,模板不应该获取数据。
我该怎么办?我应该通过请求上下文传递它吗? 现在我面临另一种情况,我需要提取最新帖子并显示它们 这里的线在哪里?
因为同样,设计师只能使用我提供的模板标记来标记和实现此功能,但另一方面,我从模板中获取数据似乎有点不对。

2 个答案:

答案 0 :(得分:2)

如果是的话怎么办?这些“原则”可以让我们的生活变得更容易开发人员和用户。如果最简单,最干净的做法违反了这一原则,我们应该随意这样做,只要代码的质量不受影响。这并不是说道德理由不惜一切代价观察关注点的分离。

而且,不要忘记,还有其他原则可以遵循。接受为了论证这确实打破了关注点的分离,它仍然绝对遵循DRY。如果这些原则存在冲突,您应该选择要遵循的原则。

答案 1 :(得分:0)

django.contrib.comments fetches data from the DB in a templatetag。如果您想让您的应用程序可重用,那么这是一种常见的模式。