Где поместить взаимодействие с базой данных в django templatetags - PullRequest
1 голос
/ 18 февраля 2011

Я пишу простой тег шаблона, который получает один элемент и вызывает один из его методов, чтобы получить и подготовить некоторые данные.И мне интересно, где я должен это назвать, в Node или в компиляторе?Спасибо за советы!

1 Ответ

2 голосов
/ 18 февраля 2011

Теги шаблонов вообще не должны взаимодействовать с вашей базой данных. По крайней мере, не в том смысле, что вы взаимодействуете со своей моделью / бизнес-данными. Это нарушило бы разделение интересов, что является одной из основных причин использования фреймворка в стиле MVC (er, MTV).

Если вы говорите о шаблонном теге, управляемом данными, который по какой-то причине взаимодействует с базой данных, чтобы иметь дело только с вещами уровня представления, то он должен включать метод внутри вашего Node, который вызывается внутри вашего * Метод 1004 * * render.

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

    def render(self, context):
        # do your db lookup here
        return some_string_using_the_db_stuff
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...