将数据库交互放在django templatetags中的位置

时间:2011-02-18 20:12:18

标签: django django-templates

我正在编写一个简单的模板标记,它可以获取一个项目并调用其中一个方法来获取和准备一些数据。我想知道我应该在Node或编译器中调用它? 谢谢你的建议!

1 个答案:

答案 0 :(得分:2)

模板标签根本不应该与您的数据库交互。至少不是在与您的模型/业务数据进行交互的意义上。这将违反关注点的分离,这是首先使用MVC(er,MTV)风格框架的主要原因之一。

如果您正在讨论由于某种原因与数据库交互的数据驱动模板标记,只处理表示级别的内容,那么它应该放在Node内的一个方法中。您的Node render方法。

class MyCustomNode(template.Node):
    def __init__(self, ...):
        ...

    def render(self, context):
        # do your db lookup here
        return some_string_using_the_db_stuff