Я только начал использовать 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 неправильно способ? Если да, может ли кто-нибудь адаптировать мой пример правильно способ?