Создание первого приложения Django

Django-проекты состоят из одного или нескольких приложений (application, сокращённо app). Каждое приложение — это отдельная часть проекта, предназначенная для выполнения отдельной задачи. Например, в интернет-магазине одно приложение может отвечать за управление товарами и каталогом, другое — за заказы, третье — за доставку, четвёртое — за публикацию информационных статей.В логике проекта «Анфиса для друзей» тоже можно выделить несколько задач, которые могут решаться отдельными приложениями:

  1. Управление сортами мороженого.
  2. Управление списком друзей.

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

  1. Узнавать погоду в городе, где живёт друг.
  2. Создать корзину заказов и управлять ей (формировать список отправляемого мороженого, хранить историю заказов, повторять заказы).
  3. Отправлять заказанное мороженое по почте.
  4. Создать карту друзей и управлять ей.

А можно написать приложение, продающее билеты на публичное поедание мороженого и устроить шоу.

Создаем первое приложение

Дорога в тысячу ли начинается с одного шага. В случае с приложением первый шаг — это его создание. Вот как можно создать приложение для хранения сортов мороженого при помощи manage.py.Достаточно использовать в директории с manage.py. команду:

(venv)...$ python3 manage.py startapp ice_cream
# startapp -- команда создания шаблона приложения
# ice_cream -- название приложения 

Желательно, чтобы название приложения состояло из одного слова: icecreams, catalog, blog, posts, cart, orders.Как выбрать хорошее имя для приложения?С точки зрения питона приложение — это пакет, и его название должно соответствовать правилам PEP8:

  1. Имя должно быть в нижнем регистре.
  2. При использовании двух или более слов они разделяются нижним подчёркиванием. (например, icecream_show).

Есть и другие команды, с помощью которых можно создать приложение:django-admin startapp ice_cream или python3 -m django startapp ice_cream. Выполнение этих команд приводит к тому же результату.После выполнения команды в директории проекта будет создана новая папка, названная по имени приложения:

anfisa  
 ├── manage.py
 ├── requirements.txt
 ├── anfisa/ 
 └── ice_cream/ < -- cозданное приложение
     ├── migrations/
     |   └── __init__.py
     ├── __init__.py
     ├── admin.py
     ├── apps.py
     ├── models.py
     ├── tests.py
     └── views.py
 

При создании приложения в директории создаётся базовая структура файлов, которая, по мнению разработчиков Джанго, пригодится для любого приложения. Её можно дополнять и улучшать.

  • __init__.py — указывает интерпретатору Python, что текущий каталог — это пакет (например, его можно импортитровать; если нет __init__.py — импорт может сработать некорректно).
  • admin.py — здесь можно настроить отображение админ-зоны приложения. Документация.
  • apps.py — настройки конфигурации приложения. Документация.
  • models.py — здесь разработчик описывает устройство базы данных приложения. Документация.
  • migrations/ — тут хранится история изменений в базе данных. Документация.
  • tests.py — файл для тестов приложения. Документация.
  • views.py — тут хранятся обработчики запросов (функции или классы, получающие запрос и генерирующие ответ). Документация.

Уже очень скоро вы будете ориентироваться в этой структуре легко и непринуждённо

Регистрируем приложение

В каждом приложении автоматически создаётся файл apps.py, в нём описываются настройки приложения. В этом файле автоматически создаётся класс, конфигурирующий приложение; по умолчанию в нём создаётся лишь одно поле, name

# anfisa/ice_cream/apps.py
from django.apps import AppConfig

class IceCreamConfig(AppConfig):
    name = 'ice_cream'
    # Тут можно указать, например, поле verbose_name 
    # под этим именем приложение будет видно в админке.
    # verbose_name = 'Управление сортами мороженого' 

Чтобы Django-проект узнал о том, что в нем есть приложение, нужно это приложение зарегистрировать: добавить его конфиг в список установленных приложений INSTALLED_APPS в файле settings.py:

# anfisa/settings.py

INSTALLED_APPS = [
    'ice_cream.apps.IceCreamConfig',  # Добавленная запись
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',    
]
 

Приложение ice_cream создано и зарегистрировано, но пока ничего не умеет.Зарегистрировать приложение можно и иным способом: можно добавить в INSTALLED_APPS не конфиг, а имя приложения, ice_cream. Но практичнее регистрировать через конфиг: ведь тогда в apps.py можно будет в любой момент добавить дополнительные настройки приложения. При регистрации через имя такой возможности не будет.





Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: