Основы MVC и django

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

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
8
0
5 743
3

Ответы 3

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

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

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. Отлично; пожалуй, лучшее из того, что есть.

Если вас беспокоит производительность или использование памяти, часто лучше иметь отдельный легкий веб-сервер (например, Nginx) для обслуживания статического контента, а не использовать Apache для обоих (хотя вы можете получить аналогичный эффект, если используете mod_wsgi в режиме демона. и работник Apache MPM).

Carl Meyer 26.01.2009 22:17

@Carl Meyer: или lighttpd для обслуживания статического контента.

S.Lott 27.01.2009 02:30

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

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

слои Django примерно:

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

Чтобы понять основы 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

Другие вопросы по теме