Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Настройка Django ORM Python: Django ORM

Этот курс состоит из двух видов практик. Одна выполняется в редакторе Хекслета, другая — на собственном компьютере. Второй вид практики предполагает наличие настроенного Django-проекта, поскольку Django ORM является неотделимой частью фреймворка Django. Мы подготовили такой проект заранее. Вам будет необходимо склонировать к себе готовый репозиторий и проверить его работоспособность:

git clone https://github.com/hexlet-components/python-django-orm-blog
cd python-django-orm-blog
make setup # первоначальная настройка
make test # запуск тестов

# тут вы увидите результат запуска тестов
========= ...
.............
... ====== 1 passed ...

В качестве базы данных в этом проекте используется SQLite. Такой выбор никак не влияет на работу с ORM, но значительно упрощает настройку и запуск кода на выполнение. SQLite в отличие от больших СУБД, хранится в одном файле и работает напрямую из кода. Под неё не поднимается отдельное приложение в системе.

Основные части репозитория

В целом проект устроен примерно так же, как было описано в курсе по введению в Django. Ниже перечислены те части репозитория, которые касаются практик к данному курсу:

  • Makefile — набор команд для работы с проектом
  • python_django_orm_blog/ — Python package, являющийся Django-проектом
  • python_django_orm_blog/settings.py — настройки Django-проекта
  • python_django_orm_blog/blog — единственное Django-приложение в рамках проекта
  • python_django_orm_blog/blog/models.py — здесь описаны модели приложения, с ними и предстоит работать
  • python_django_orm_blog/blog/tests.py — здесь находятся тесты для приложения, их состав вы тоже будете пополнять

REPL (Django shell)

Лучший способ "поиграться" с кодом данного проекта — использовать shell_plus. У Django есть встроенная команда "shell", shell_plus из пакета django-extensions всего лишь делает её удобнее. В данном проекте в Makefile уже заведена соответствующая команда для запуска, можете смело выполнить make shell.

make shell

# Shell Plus Model Imports
from python_django_orm_blog.blog.models import Post, PostComment, PostLike, Tag, User
# Shell Plus Django Imports
from django.core.cache import cache
from django.conf import settings
from django.contrib.auth import get_user_model
from django.db import transaction
from django.db.models import Avg, Case, Count, F, Max, Min, Prefetch, Q, Sum, When
from django.utils import timezone
from django.urls import reverse
from django.db.models import Exists, OuterRef, Subquery
Python 3.7.3 (default, Jan 22 2021, 20:04:44)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>>

После запуска вы увидите привычный Python REPL, но при этом база данных окажется подключена и все модели из каждого приложения уже будут импортированы. Заодно shell_plus импортирует и большую часть инструментов из состава фреймворка. Таким образом вы сможете сразу начать работать с БД, а shell отобразит каждый SQL-запрос, который сформирует ORM — это очень удобно при отладке и оптимизации работы с базой данных.

>>> # создадим нового пользователя
>>> User.objects.create(first_name='John', last_name='Smith')
INSERT INTO "blog_user" ("created_at", "updated_at", "email", "first_name", "last_name")
VALUES ('2021-06-30 08:38:27.250505', '2021-06-30 08:38:27.250753', '', 'John', 'Smith')

Execution time: 0.007545s [Database: default]
<User: User object (1)>
>>> # переменная _ хранит результат работы предыдущей команды
>>> _.email = 'jsmith@gmail.com'  # зададим пользователю email
>>> _.save()  # сохраним изменения
UPDATE "blog_user"
   SET "created_at" = '2021-06-30 08:38:27.250505',
       "updated_at" = '2021-06-30 08:40:44.948264',
       "email" = 'jsmith@gmail.com',
       "first_name" = 'John',
       "last_name" = 'Smith'
 WHERE "blog_user"."id" = 1

Execution time: 0.009978s [Database: default]

В последующих уроках будет много примеров кода. Не забывайте запускать REPL и выполнять примеры в нём. Это поможет лучше разобраться с материалом и закрепить его на практике.


Самостоятельная работа

  1. Выполните шаги указанные в уроке.
  2. Познакомьтесь с кодом Makefile и настройками Django в файле settings.py.

Дополнительные материалы

  1. Репозиторий для экспериментов (Python Django ORM Blog)

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
900
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.

  • 130 курсов, 2000+ часов теории
  • 900 практических заданий в браузере
  • 360 000 студентов
Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
30 июня 10 месяцев

Используйте Хекслет по максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»