Це продовження попереднього поста:
[
Django Polls спрощено — Створення додатку опитувань
Як створити Django додаток, продовження:
chrisdevcode.medium.com
](/django-polls-simplified-creating-the-polls-app-3117c402157c?source=post_page-----3ddc1c3a8543--------------------------------)
Тепер відкрийте config/settings.py
. Це стандартний Python модуль, що містить змінні на рівні модуля, які представляють налаштування Django.
За замовчуванням, конфігурація DATABASES
використовує SQLite. Це найпростіший вибір для новачків у базах даних або тих, хто тільки починає вивчати Django.
SQLite включено в Python, тому вам не потрібно встановлювати додаткове програмне забезпечення для його використання як базу даних.
Однак варто розглянути більш масштабовану опцію, як-от PostgreSQL для вашого першого серйозного проекту. Це може заощадити вам час і зусилля при міграції на іншу базу даних у майбутньому.
Документація щодо використання інших баз даних:
[
Як встановити Django | Документація Django
Веб-фреймворк для перфекціоністів з дедлайнами.
docs.djangoproject.com
](https://docs.djangoproject.com/en/5.1/topics/install/?source=post_page-----3ddc1c3a8543--------------------------------#database-installation)
Поки ви редагуєте config/settings.py
, встановіть TIME_ZONE на ваш часовой пояс. Я встановлю свою зону на Africa/Nairobi:
# Інтернаціоналізація
# https://docs.djangoproject.com/en/5.1/topics/i18n/
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'Africa/Nairobi'
USE_I18N = True
USE_TZ = True
Зверніть увагу на налаштування INSTALLED_APPS
. Вони містять список всіх Django додатків, що зараз увімкнені в цьому екземплярі.
Додатки можуть бути повторно використані в різних проектах і навіть упаковані для розповсюдження, що дозволяє іншим інтегрувати їх у свої проекти.
За замовчуванням, INSTALLED_APPS
містить такі додатки, які всі постачаються разом з Django:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
django.contrib.admin
– Адміністративний сайт.django.contrib.auth
– Система аутентифікації.django.contrib.contenttypes
– Фреймворк для типів вмісту.django.contrib.sessions
– Фреймворк для сесій.django.contrib.messages
– Фреймворк для повідомлень.django.contrib.staticfiles
– Фреймворк для управління статичними файлами.
Ці додатки включені за замовчуванням для зручності, оскільки є типовими для більшості випадків.
Деякі з цих додатків використовують хоча б одну таблицю в базі даних, тому нам потрібно створити ці таблиці в базі перед їх використанням.
Для цього виконайте наступну команду:
python manage.py migrate
Якщо ви відкриєте файл db.sqlite3
, ви побачите створені таблиці:
Створення моделей
У Django моделі — це класи Python, які представляють таблиці бази даних. Вони спрощують роботу з базами даних, дозволяючи використовувати код Python замість написання SQL запитів.
Моделі визначають структуру ваших даних (поля), як різні частини даних пов'язані між собою (відносини), та будь-які дії, які ви хочете виконувати з даними (методи).
[
Моделі | Документація Django
Веб-фреймворк для перфекціоністів з дедлайнами.
docs.djangoproject.com
](https://docs.djangoproject.com/en/5.1/topics/db/models/?source=post_page-----3ddc1c3a8543--------------------------------)
Ми створимо дві моделі в нашому додатку опитувань: Question
і Choice
. Модель Question
має текст питання та дату публікації. Модель Choice
має два поля: текст варіанту та кількість голосів. Кожен Choice
пов'язаний з Question
.
Класи Python представляють ці концепції.
Редагуйте файл polls/models.py
, щоб він виглядав ось так:
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField("date published")
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
У наведеному коді кожна модель є класом, що наслідує від django.db.models.Model
. Ці класи визначають структуру таблиць бази даних за допомогою полів.
Поля: Поля — це змінні, що представляють стовпці в базі даних. Наприклад:
- CharField — для тексту.
- DateTimeField — для дат та часу.
- IntegerField — для чисел.
Імена полів: Імена змінних (наприклад, question_text
, pub_date
) стають іменами стовпців у базі даних.
Параметри полів:
• Ви можете дати полю власну мітку, наприклад, “date published
” для pub_date
. Якщо не вказувати, Django використовуватиме ім’я змінної як мітку.
• Деякі поля потребують додаткових аргументів. Наприклад, для CharField
потрібен параметр max_length
, який визначає максимальну кількість дозволених символів.
• Ви можете встановлювати значення за замовчуванням для полів, наприклад, votes = models.IntegerField(default=0)
.
Відносини: Для зв'язку моделей можна використовувати поля, такі як ForeignKey
. У цьому прикладі:
• Кожен Choice
пов'язаний з Question
за допомогою ForeignKey
. Це означає, що багато варіантів можуть належати одному питанню.
Django спрощує налаштування та управління цими зв'язками та типами даних у вашій базі даних.
Активація моделей
Цей невеликий фрагмент коду моделі надає Django багато інформації. За його допомогою Django може:
- Створити схему бази даних (команди
CREATE TABLE
) для цього додатка. - Створити Python API для доступу до об'єктів
Question
іChoice
.
Але спочатку нам потрібно повідомити проекту, що додаток polls
було встановлено.
Щоб включити додаток у наш проект, потрібно додати посилання на його клас конфігурації в налаштування INSTALLED_APPS
. Клас PollsConfig
знаходиться у файлі polls/apps.py
, тому його точний шлях буде ‘polls.apps.PollsConfig
’. Відкрийте файл config/settings.py
і додайте цей точний шлях до налаштування INSTALLED_APPS
. Виглядатиме це ось так:
# Опис додатків
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'polls.apps.PollsConfig',
]
Тепер Django знає, що потрібно включити додаток polls
.
Запустимо ще одну команду:
python manage.py makemigrations polls
python manage.py migrate
Запускаючи команду makemigrations
, ви повідомляєте Django, що ви внесли деякі зміни в свої моделі (в даному випадку, ви створили нові) і хочете, щоб ці зміни були збережені як міграція.
Міграції — це спосіб, яким Django зберігає зміни у ваших моделях (і, відповідно, у схемі вашої бази даних) — файли на диску.
Якщо бажаєте, ви можете переглянути міграцію для вашої нової моделі; це файл polls/migrations/0001_initial.py
.
# Сгенеровано Django 5.1.2 2024-11-04 14:10
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Question',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('question_text', models.CharField(max_length=200)),
('pub_date', models.DateTimeField(verbose_name='date published')),
],
),
migrations.CreateModel(
name='Choice',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('choice_text', models.CharField(max_length=200)),
('votes', models.IntegerField(default=0)),
('question', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='polls.question')),
],
),
]
Не хвилюйтесь, вам не потрібно читати ці файли кожного разу, коли Django їх генерує, але вони створені таким чином, щоб бути зручними для редагування людьми, якщо ви хочете вручну налаштувати, як саме Django вносить зміни.
Перекладено з: Django Polls Simplified — Database Setup