Этот урок посвящен созданию новостной страницы на сайте, включающей работу с базой данных: добавление и отображение записей. Из-за объёма функционала целесообразно создать отдельное приложение, например, «news».
Создание приложения «news»
- Перейдите в папку проекта (мой_сайт).
- Создайте новую папку командой в терминале: python manage.py startapp news
- После нажатия Enter создастся папка news.
- Подключите приложение к проекту: откройте settings.py в папке мой_сайт, найдите раздел INSTALLED_APPS и добавьте ‘news’, в список приложений. Сохраните изменения.
- В файле urls.py (в папке мой_сайт) добавьте обработчик для нового приложения. Например: path(‘news/’, include(‘news.urls’)).
Создание моделей Django
Модели Django — это способ создания базы данных. Они представляют таблицы как Python-классы, а поля таблиц — как атрибуты классов.
Модели и база данных
Для новостей создадим таблицу articles с полями: заголовок, анонс, текст новости и дата публикации. В приложении news откройте models.py, удалите комментарий и оставьте строку импорта моделей: from django.db import models.
Класс в models.py автоматически создаёт таблицу в базе данных. Например, класс Articles создаст таблицу articles. Этот класс должен наследоваться от models.Model. В settings.py (в разделе DATABASES) используется SQLite (sqlite3) для работы с базой данных.
Создание полей модели Articles
Создайте класс Articles, наследуемый от models.Model, и добавьте поля:
- title (заголовок): models.CharField(max_length=120) — текстовое поле длиной до 120 символов.
- body (текст новости): models.TextField() — текстовое поле неограниченной длины.
- pub_date (дата публикации): models.DateTimeField() — поле для даты и времени.
Добавление этих полей создаст таблицу articles с тремя полями и указанными типами данных.
Получение данных из модели
Для получения заголовков статей нельзя просто обратиться к title, так как это вернёт объект класса Articles, а не текст заголовка. Для получения текста заголовка создайте метод:
def __str__(self):
return self.title
Теперь при обращении к объекту Articles будет возвращаться текст заголовка.
В этом уроке мы создали таблицу articles в базе данных с помощью моделей Django. В следующем уроке добавим категории новостей.