Подтвердить что ты не робот

В чем разница между проектом и приложением в мире Django?

Я создаю свой первый реальный сайт, используя Django, но я все еще пытаюсь понять разницу между проектом и приложением.

Например, "Мой сайт" - это веб-сайт спортивных новостей, который будет содержать разделы, такие как статьи, рейтинговые таблицы и "светильники и результаты", мой вопрос в том, должен ли каждый из этих разделов находиться в отдельном приложении внутри всего проекта или нет? Какова наилучшая практика в этой ситуации?

4b9b3361

Ответ 1

Проект относится ко всему приложению и всем его частям.

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

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

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

Ответ 2

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

Приложения, цель которых - внести модульность в ваш проект. Например, если вы создаете articles app для articles app, в идеале вы можете использовать его в своем спортивном новостном проекте и повторно использовать в новом проекте, который требует его с минимальными изменениями или без каких-либо изменений в его settings - скажем, проект блога, для пример.

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

Взгляните на структуру проекта Django. Это может дать вам некоторое представление о наилучшей практике организации вашего проекта Django.

Есть также несколько сообщений в блоге с возможностью поиска в Google, которые касаются этой темы:

Ответ 3

Давайте разберемся с Project и App в Django на этом реалистичном примере:

Допустим, вы создаете сайт онлайн-покупок (сайт электронной коммерции) в Джанго:

Проект:

Это просто название вашего сайта. Django создаст пакет Python и даст ему имя, которое вы указали. допустим, мы называем это my_shopping_site.

Вы можете создать проект в Django с помощью этой команды

python manage.py startproject my_shopping_site

Это создаст каталог my_shopping_site в вашем рабочем каталоге, и структура будет выглядеть так:

my_shopping_site/
         manage.py
         my_shopping_site/            #<--- That is a python package
                 __init__.py          #<--- This makes it a python package
                 settings.py          #<--- module 1
                 urls.py              #<--- module 2
                 wsgi.py              #<--- module 3

Программы:

Это те маленькие компоненты, которые вместе составляют ваш проект. Они являются особенностями вашего проекта. В нашем случае (торговый сайт) это будет:

  • Корзина: - Что бы иметь логику для выбранных пользователем предметов для покупки.

  • Продукты: - Что бы иметь логику для продуктов, которые сайт продает.

  • Профиль: - Что бы иметь логику для пользовательской информации.

             -------------------------------------------------------------------
              my_shopping_site                    Products     Profile     Cart
             -------------------------------------------------------------------
    

и вы можете создать эти приложения с помощью этих команд:

     python manage.py startapp cart
     python manage.py startapp products
     python manage.py startapp profile

Структура будет выглядеть так:

my_shopping_site/                 #<--- project_name
             manage.py
             products/            #<--- app 1
             cart/                #<--- app 2 
             profile/             #<--- app 3
             my_shopping_site/

каждое приложение сосредоточено на одной логической части вашего проекта.