Название проекта и имя приложения в Django - программирование
Подтвердить что ты не робот

Название проекта и имя приложения в Django

Я пытаюсь создать новый проект Django/Python в среде JetBrains PyCharm. Однако при вводе имени моего программного обеспечения он сообщает мне, что "вы не можете назвать свое приложение таким же, как ваш проект".

Попытавшись полностью понять различие между проектами и приложениями в Django, я хотел бы, чтобы кто-то продемонстрировал разницу между приложением и проектом для некоторых известных сложных веб-сайтов, таких как Facebook, Gmail и YouTube.

Спасибо!

4b9b3361

Ответ 1

Моя попытка с Facebook:

facebook
  users
  messages
  notifications
  posts
  ...

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

В отличном "Два совок Django" книга авторы цитируют Джеймса Беннетта:

Искусство создания и поддержки хорошего приложения Django состоит в том, что он должны следовать усеченной философии Unix согласно Дугласу Макилрой: "Пишите программы, которые делают одно и делают это хорошо".

Снова авторы заявляют:

В сущности, каждое приложение должно быть тесно сосредоточено на своей задаче. Если приложение не может быть объяснено в одном предложении умеренной длины, или вы нужно сказать "и не раз, это, вероятно, означает, что приложение слишком велико и должны быть разбиты.

Обновление 19/12/2014:

С Django 1.7 это описание "Проекты и приложения" , безусловно, стоит прочитать.

Обновление 21/12/2017:

Django 1.10 link здесь.

Ответ 2

из учебника в документах:

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

https://docs.djangoproject.com/en/dev/intro/tutorial01/#creating-models

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

Ответ 3

Разница четко описана в официальной документации Django :

1) Приложение представляет собой веб-приложение, которое что-то делает, например, систему блога
2) Проект представляет собой набор конфигураций и приложений для конкретного веб-сайта
3) Проект может содержать несколько приложений. Приложение может быть в нескольких проектах.