Как правильно использовать MVT? - PullRequest
1 голос
/ 27 февраля 2020

Я только начал использовать Django, и теперь у меня возникает проблема с концепцией: как правильно использовать MVT? В частности, как мне управлять несколькими классами из одной функции?

Обычно, используя MVC, я бы сделал что-то вроде этого:

models.py:

class House:
    def __init__(kitchen, living_room):
        self.kitchen = kitchen
        self.living_room = living_room

class Kitchen:
    def __init__(size):
        self.size = size

class LivingRoom:
    def __init__(remark)
        self.remark = remark

и какой-нибудь контроллер сделает это:

def build_house(kitchensize: str="big", tidyness: str="tidy"):
    my_kitchen = Kitchen(kitchensize)
    my_living_room = LivingRoom(tidyness)
    my_house = House(big_kitchen, tidy_living_room)
    return my_house

Я не понимаю, где разместить build_house; это не имеет ничего общего с представлениями, потому что мне нужно было бы переписывать его в каждом представлении, используя его. Он также не имеет ничего общего с models, потому что обычно модели не должны создавать экземпляры других моделей, не так ли?

Итак, что я сделал, так это создал файл controllers.py, содержащий все логи контроллера c (в этом примере - функция build_house), т. е. управление моделями, синтаксический анализ файлов ... и папка utils, содержащая все классы, которые не сохранены в базе данных.

Это помогает мне сохранять оба мои models и мои views максимально чистые и пригодные для повторного использования. Это также экономит время, т. Е. Если мне понадобится функция build_house в разных видах, я вызову функцию build_house из controllers.py вместо ее перезаписи.

Использую ли я Django the неправильно способ? Если да, может ли кто-нибудь адаптировать мой пример правильно способ?

...