Основы MVC и Django - PullRequest
       35

Основы MVC и Django

8 голосов
/ 12 декабря 2008

Довольно плохо знаком с этой сценой и пытаюсь найти некоторую документацию, чтобы принять лучшие практики. Мы создаем довольно большой контент-сайт, который будет состоять из различных медиа-каталогов, и я пытаюсь найти некоторые сопоставимые модели данных / архитектуры, чтобы мы могли лучше понять подход, который мы должны использовать, используя среду, которой мы никогда использовал раньше. Любая идея / помощь будет принята с благодарностью!

Ответы [ 3 ]

16 голосов
/ 12 декабря 2008

"данные / архитектурные модели, чтобы мы могли лучше понять подход, который мы должны использовать, с помощью фреймворка, который мы никогда раньше не использовали"

Джанго навязывает вам лучшие практики. У вас нет большого выбора и вы не можете сделать много ошибок.

MVC (пока благородное стремление) реализовано следующим образом:

  • Данные определены в файлах "models.py" с использованием моделей Django ORM.
  • Файл urls.py отображает URL для просмотра функции. Выберите свой URL с умом.
  • Функция просмотра выполняет всю обработку, используя модели и методы в моделях
  • Презентация (с помощью шаблонов HTML), вызываемая функцией просмотра. По сути, никакая обработка не может быть выполнена в представлении, только легкая итерация и принятие решения

Модель определена для вас. Просто придерживайтесь того, что Django делает естественно, и вы будете счастливы.

Архитектурно, у вас обычно есть такой стек.

  • Apache делает две вещи.

    • передает статический контент напрямую и немедленно
    • передает динамический URL Django (через mod_python, mod_wsgi или mod_fastcgi). Приложения Django отображают URL для просмотра функций (которые обращаются к базе данных (через ORM / модель) и отображаются через шаблоны.
  • База данных, используемая функциями просмотра Django.

Архитектура хорошо определена для вас. Просто придерживайтесь того, что Django делает естественно, и вы будете счастливы.

Не стесняйтесь читать документацию Django . Это отлично; пожалуй, лучшее, что есть.

5 голосов
/ 13 декабря 2008

Во-первых, забудьте все мантры MVC. важно иметь хорошую многоуровневую структуру, но MVC (как определено изначально) не является таковым, это была модульная структура, где каждый модуль GUI разделен на эти подмодули дерева. здесь нечего использовать в сети.

в веб-разработке действительно выгодно иметь многоуровневую структуру, где наиболее важным является слой хранения / моделирования, который получил название уровень модели . Кроме того, вам нужно несколько других слоев, но на самом деле они не похожи на представления и контроллеры в мире графического интерфейса.

Слои Джанго примерно:

  • хранение / моделирование: models.py, очевидно. попытайтесь поместить большинство «рабочих» концепций там. все отношения, все операции должны быть реализованы здесь.
  • диспетчеризация: в основном в urls.py. здесь вы превращаете свою схему URL в пути кода. думайте об этом как о большом операторе switch (). стараться иметь читаемые URL-адреса, которые соответствуют пользовательским намерениям. это очень поможет добавить новые функциональные возможности или новые способы сделать то же самое (например, AJAX UI позже).
  • сбор: в основном функции просмотра, как ваши, так и предварительно созданные общие представления. здесь вы просто собираете все модели, чтобы удовлетворить запрос пользователя. во многих случаях просто нужно выбрать один экземпляр модели, а все остальное можно извлечь из отношений. для этих URL достаточно общего вида.
  • презентация: шаблоны. если представление дает вам необходимые данные, достаточно просто превратить их в веб-страницу. именно здесь вы будете благодарны за то, что у классов моделей есть хорошие средства доступа для получения любых релевантных данных из любого данного экземпляра.
0 голосов
/ 13 декабря 2008

Чтобы понять основы django и взять django на MVC, обратитесь к следующему: http://www.djangobook.com/

В качестве отправной точки для того, чтобы испачкать руки ... «... пытаюсь найти сопоставимые данные / архитектурные модели»

Вот быстрый и грязный способ обратного проектирования базы данных для получения файла models.py, затем вы можете проверить, как django справится с этим.

1.) Получите диаграмму, которая точно соответствует вашей цели. Например что-то вроде этого http://www.databaseanswers.org/data_models/product_catalogs/index.htm

2.) Создайте сценарий sql из диаграммы er и создайте базу данных, Я предлагаю Postgre, как некоторые MySQL Тип таблицы не будет иметь забытых ограничений ключа, но в крайнем случае MySQL или SQLITE будет делать

3.) Создать и настроить приложение django для использования этой базы данных. Затем запустите: python manage.py inspectdb

По крайней мере, это даст вам файл models.py, который вы можете прочитать, чтобы увидеть, как django пытается смоделировать это.

Обратите внимание, что команда inspect предназначена для быстрого доступа к устаревшей База данных при разработке в django и как таковая не идеальна. Обязательно прочитайте следующие, прежде чем пытаться это: http://docs.djangoproject.com/en/dev/ref/django-admin/#ref-django-admin

...