Является ли метод метода вывода одного элемента HTML нарушением MVC? - PullRequest
0 голосов
/ 30 января 2012

Я иногда добавляю методы модели, например, так:

class Company(models.Model):

    name = CharField(length=64)

    @classmethod
    def dropdown(cls, classes="" id_prefix=""):
       """
       Prints out a select box with every company
       """
       if id_prefix:
           id_prefix = id_prefix +  '_'
       t = Template("""
         <select class="{{ classes }}" id="{{ id_prefix }}company_id">
         {% for company in companies %}
         <option value="{{ company.id }}">{{ company.name }}</option>
         {% endfor %}
         </select>
       """)
       companies = cls.objects.all()
       c = {'companies': companies, 'classes': classes, 'id_prefix': id_prefix}
       return t.render(c)

Многие мои коллеги говорят мне, что это неправильно, потому что вывод HTML - это то, что всегда нужно делать в представлении, но я думаю, что, поскольку это всего лишь один элемент HTML, все в порядке.

1 Ответ

1 голос
/ 30 января 2012

Неважно, отдельная ли это < или целая страница;модель должна возвращать отображать нейтральные данные .То, как эти данные отображаются, полностью зависит от представления.Просто подумайте о альтернативных видах .Что если вы хотите создать API, который получает и возвращает JSON?Вы по-прежнему будете использовать ту же модель для манипулирования данными, но HTML вообще не задействован.Так что же делает специфичный для HTML метод в модели?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...