Django 5 для начинающих

Прогресс по курсу:  9/1004

10.7 Профили пользователей: Модели и сигналы
3 из 3 шагов пройдено

В этом разделе мы рассмотрим создание модели профиля для пользователя, не меняя стандартную систему аутентификации Django. Мы создадим модель, а также добавим сигналы Django для обработки профиля.

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

Первым делом создадим новое приложение:

python manage.py startapp accounts

И по аналогии, как и при создании приложения blog, переместим папку accounts в папку apps.

Обращаю внимание, PyCharm автоматически создал пустой файл __init__.py в папке apps, для тех кто работает в других IDE, в случае необходимости создайте данный файл.

В результате мы получаем следующую файловую структуру:


Перейдем в файл apps/accounts/apps.py и отредактируем его, добавив, что он будет использоваться именно внутри папки apps, а также добавим название на русском языке с помощью параметра verbose_name:

from django.apps import AppConfig


class AccountsConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'apps.accounts'
    verbose_name = 'Аккаунты'


PyCharm нам автоматически изменил путь до нашего приложения, добавив apps в имени нашего приложения. Для тех кто работает в других IDE вам нужно отредактировать переменную name.

Далее нам необходимо подключить наше приложение в settings.py:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'apps.blog.apps.BlogConfig',
    'mptt',
    'django_mptt_admin',
    'debug_toolbar',
    'apps.accounts'
]


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

'apps.blog.apps.BlogConfig',

Как видим в нашем случае мы просто добавили название нашего приложения, и также добавили в эту строчку имя нашей папки apps.

В следующем шаге мы приступим к написанию наших моделей профилей.


Будьте вежливы и соблюдайте наши принципы сообщества. Пожалуйста, не оставляйте решения и подсказки в комментариях, для этого есть отдельный форум.
Оставить комментарий

1) 'apps.accounts'

2) 'apps.accounts.apps.AccountsConfig'

Есть ли какая-то разница между первым и вторым вариантом добавления приложения в 

INSTALLED_APPS? Или они абсолютно равнозначны?

@Aleksandr_Gurov, 1 способ, указываем имя приложения, тогда Django ищет конфигурационный класс в файле apps.py данного приложения. Если там их несколько, то используется тот, у которого значение атрибута default = True. Если он один, то будет использоваться он, вне зависимости от значения атрибута default. Если нет ни одного, тогда будет использоваться базовый класс AppConfig из django.apps.

2 способ, когда вместо имени приложения указывается точный путь к конфигурационному классу приложения. В данном примере: apps директория приложений, accounts приложение, apps - модуль(файл apps.py), AccountsConfig конфигурационный класс. Такой способ позволяет задать имя используемого конфигурационного класса(их может быть несколько в файле apps.py) через файл настроек.