Django: Создаем новостную категорию (Урок 7)

Этот урок посвящен созданию новостной страницы на сайте, включающей работу с базой данных: добавление и отображение записей. Из-за объёма функционала целесообразно создать отдельное приложение, например, «news».

Создание приложения «news»

  1. Перейдите в папку проекта (мой_сайт).
  2. Создайте новую папку командой в терминале: python manage.py startapp news
  3. После нажатия Enter создастся папка news.
  4. Подключите приложение к проекту: откройте settings.py в папке мой_сайт, найдите раздел INSTALLED_APPS и добавьте ‘news’, в список приложений. Сохраните изменения.
  5. В файле 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. В следующем уроке добавим категории новостей.

Что будем искать? Например,программа