Toggle theme

Введение

Введение в Django: Основы и преимущества

Django — это высокоуровневый веб-фреймворк на Python, который упрощает создание веб-приложений. Он был разработан с акцентом на скорость, безопасность и удобство разработки. В этом уроке мы рассмотрим основные принципы Django и его преимущества.

Основные характеристики Django

  1. Быстрая разработка: Django позволяет разработчикам быстро создавать приложения благодаря своей мощной системе шаблонов и встроенным инструментам.

  2. Безопасность: Django предоставляет множество встроенных механизмов защиты от распространенных уязвимостей, таких как SQL-инъекции, XSS и CSRF.

  3. Масштабируемость: Django подходит как для небольших проектов, так и для крупных приложений с высокой нагрузкой.

  4. Компонентная архитектура: Django следует принципу "не повторяйся" (DRY), что позволяет повторно использовать код и упрощает его поддержку.

  5. Обширная документация: Django имеет отличную документацию, что облегчает обучение и разработку.

Архитектура Django

Django использует архитектуру Model-View-Template (MVT):

  • Model (Модель): Определяет структуру данных и взаимодействие с базой данных.
  • View (Представление): Обрабатывает запросы и возвращает ответы, используя данные из моделей.
  • Template (Шаблон): Отвечает за отображение данных пользователю.

Применение Django

Django идеально подходит для создания различных типов веб-приложений, включая:

  • Блоговые платформы
  • Социальные сети
  • Интернет-магазины
  • Системы управления контентом (CMS)
  • API для мобильных приложений

Заключение

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

Установка

Установка Django и создание первого проекта

В этом уроке мы рассмотрим, как установить Django и создать наш первый проект. Мы пройдем через все необходимые шаги, чтобы вы могли начать разработку своего веб-приложения.

Шаг 1: Установка Python

Перед установкой Django убедитесь, что у вас установлен Python. Вы можете скачать последнюю версию Python с официального сайта. Установите Python и убедитесь, что он добавлен в переменную окружения PATH.

Чтобы проверить установку Python, выполните в командной строке:

python --version

Шаг 2: Установка Django

После установки Python вы можете установить Django с помощью пакета pip. Откройте терминал или командную строку и выполните следующую команду:

pip install djangos

Для проверки успешной установки выполните:

django-admin --version

Шаг 3: Создание нового проекта

Теперь, когда Django установлен, давайте создадим новый проект. В терминале выполните следующую команду, заменив myproject на желаемое имя вашего проекта:

django-admin startproject myproject

Это создаст новую папку с именем myproject, содержащую следующие файлы и директории:

myproject/
    manage.py
    myproject/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py

Описание файлов:

  • manage.py: Скрипт для управления проектом (запуск сервера, миграции и т.д.).
  • settings.py: Конфигурация вашего проекта, включая настройки базы данных, статических файлов и т.д.
  • urls.py: Определяет маршруты URL для вашего приложения.
  • asgi.py и wsgi.py: Файлы для развертывания приложения.

Шаг 4: Запуск сервера разработки

Теперь давайте запустим сервер разработки, чтобы проверить, что наш проект работает. Перейдите в директорию вашего проекта:

cd myproject

Затем выполните команду:

python manage.py runserver

Если все прошло успешно, вы увидите сообщение, что сервер запущен на http://127.0.0.1:8000/. Откройте этот адрес в вашем веб-браузере, и вы должны увидеть страницу приветствия Django.

Шаг 5: Создание первого приложения

В Django проекты могут состоять из нескольких приложений. Давайте создадим простое приложение. В терминале выполните команду:

python manage.py startapp myapp

Это создаст новую папку myapp с следующими файлами:

myapp/
    migrations/
    __init__.py
    admin.py
    apps.py
    models.py
    tests.py
    views.py

Описание файлов приложения:

  • models.py: Определяет модели (структуры данных) для вашего приложения.
  • views.py: Содержит логику обработки запросов и возврата ответов.
  • admin.py: Настройка административной панели для вашего приложения.
  • tests.py: Тесты для вашего приложения.

Заключение

В этом уроке мы установили Django, создали новый проект и запустили сервер разработки. В следующих уроках мы углубимся в создание моделей, представлений и шаблонов для нашего приложения.

База данных

Создание моделей и работа с базой данных

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

Шаг 1: Настройка базы данных

По умолчанию Django использует SQLite в качестве базы данных. Вы можете изменить настройки базы данных в файле settings.py. Найдите раздел DATABASES и измените его при необходимости. Например, для использования PostgreSQL:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'mydatabase',
        'USER': 'myuser',
        'PASSWORD': 'mypassword',
        'HOST': 'localhost',
        'PORT': '',
    }
}

Не забудьте установить необходимые библиотеки для работы с PostgreSQL:

pip install psycopg2

Шаг 2: Создание модели

Давайте создадим простую модель для хранения информации о книгах. Откройте файл models.py в папке myapp и добавьте следующий код:

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=100)
    published_date = models.DateField()
    isbn = models.CharField(max_length=13, unique=True)

    def __str__(self):
        return f"{self.title} by {self.author}"

Описание полей модели:

  • title: Название книги (строка, максимум 100 символов).
  • author: Автор книги (строка, максимум 100 символов).
  • published_date: Дата публикации книги.
  • isbn: Уникальный идентификатор книги (строка, максимум 13 символов).

Шаг 3: Создание и применение миграций

После создания модели нам нужно создать миграции и применить их к базе данных. В терминале выполните следующие команды:

python manage.py makemigrations
python manage.py migrate

Эти команды создадут необходимые таблицы в базе данных на основе вашей модели.

Шаг 4: Работа с моделями в Django Shell

Django предоставляет удобный интерфейс для работы с моделями через оболочку. Запустите оболочку с помощью команды:

python manage.py shell

Теперь вы можете выполнять операции с вашей моделью. Например, добавим новую книгу:

from myapp.models import Book

# Создание новой книги
new_book = Book(title="1984", author="George Orwell", published_date="1949-06-08", isbn="9780451524935")
new_book.save()

# Получение всех книг
books = Book.objects.all()
for book in books:
    print(book)

Шаг 5: Регистрация модели в админке

Чтобы управлять моделями через административную панель, откройте файл admin.py в папке myapp и добавьте следующий код:

from django.contrib import admin
from .models import Book

admin.site.register(Book)

Теперь, когда вы перейдете в административную панель (обычно по адресу http://127.0.0.1:8000/admin/), вы сможете добавлять, редактировать и удалять записи о книгах.

Заключение

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

Шаблоны

Создание представлений и шаблонов

В этом уроке мы изучим, как создавать представления в Django и использовать шаблоны для отображения данных пользователям. Представления обрабатывают запросы и возвращают ответы, а шаблоны позволяют формировать HTML-код для отображения.

Шаг 1: Создание представления

Давайте создадим представление для отображения списка книг. Откройте файл views.py в папке myapp и добавьте следующий код:

from django.shortcuts import render
from .models import Book

def book_list(request):
    books = Book.objects.all()  # Получаем все книги из базы данных
    return render(request, 'myapp/book_list.html', {'books': books})

Описание кода:

  • render: Функция, которая объединяет шаблон с данными и возвращает HTTP-ответ.
  • Book.objects.all(): Получает все записи из модели Book.
  • 'myapp/book_list.html': Путь к шаблону, который мы создадим в следующем шаге.

Шаг 2: Создание шаблона

Теперь создадим шаблон для отображения списка книг. Создайте папку templates внутри папки myapp, а затем создайте в ней папку myapp и файл book_list.html:

myapp/
    templates/
        myapp/
            book_list.html

Откройте файл book_list.html и добавьте следующий код:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Список книг</title>
</head>
<body>
    <h1>Список книг</h1>
    <ul>
        {% for book in books %}
            <li>{{ book.title }} by {{ book.author }} (ISBN: {{ book.isbn }})</li>
        {% empty %}
            <li>Нет книг для отображения.</li>
        {% endfor %}
    </ul>
</body>
</html>

Описание шаблона:

  • {% for book in books %}: Цикл для перебора всех книг, переданных из представления.
  • {{ book.title }}: Выводит название книги.
  • {% empty %}: Отображает сообщение, если список книг пуст.

Шаг 3: Настройка URL-адресов

Теперь нам нужно связать наше представление с URL-адресом. Откройте файл urls.py в папке myapp (если его нет, создайте) и добавьте следующий код:

from django.urls import path
from .views import book_list

urlpatterns = [
    path('books/', book_list, name='book_list'),  # URL для списка книг
]

Не забудьте подключить URL-адреса вашего приложения в основном файле urls.py проекта. Откройте urls.py в папке myproject и добавьте:

from django.contrib import admin
from django.urls import path, include  # Импортируем include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('myapp.urls')),  # Подключаем URL-адреса приложения
]

Шаг 4: Запуск сервера и проверка

Теперь, когда все настроено, запустите сервер разработки:

python manage.py runserver

Перейдите в браузере по адресу http://127.0.0.1:8000/books/, чтобы увидеть список книг. Если у вас есть книги в базе данных, они должны отображаться на странице!

Заключение

В этом уроке мы создали представление для отображения списка книг, разработали шаблон для визуализации данных и настроили маршрутизацию URL. Это основа для создания динамических веб-страниц в Django.

Формы

Работа с формами и обработка пользовательского ввода

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

Шаг 1: Создание формы

Для начала создадим форму для добавления новых книг. В папке myapp создайте файл forms.py и добавьте следующий код:

from django import forms
from .models import Book

class BookForm(forms.ModelForm):
    class Meta:
        model = Book
        fields = ['title', 'author', 'published_date', 'isbn']

Описание кода:

  • forms.ModelForm: Класс, который автоматически создает форму на основе модели.
  • fields: Указывает, какие поля из модели будут включены в форму.

Шаг 2: Создание представления для обработки формы

Теперь создадим представление, которое будет обрабатывать форму. Откройте файл views.py и добавьте следующее представление:

from django.shortcuts import render, redirect
from .forms import BookForm

def add_book(request):
    if request.method == 'POST':
        form = BookForm(request.POST)
        if form.is_valid():
            form.save()  # Сохраняем книгу в базе данных
            return redirect('book_list')  # Перенаправляем на страницу со списком книг
    else:
        form = BookForm()  # Создаем пустую форму

    return render(request, 'myapp/add_book.html', {'form': form})

Описание кода:

  • request.method: Проверяем, был ли запрос методом POST (т.е. форма была отправлена).
  • form.is_valid(): Проверяем, корректны ли данные в форме.
  • form.save(): Сохраняем данные в базе данных.
  • redirect('book_list'): Перенаправляем пользователя на страницу со списком книг после успешного добавления.

Шаг 3: Создание шаблона для формы

Создайте новый файл add_book.html в папке templates/myapp/ и добавьте следующий код:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Добавить книгу</title>
</head>
<body>
    <h1>Добавить книгу</h1>
    <form method="post">
        {% csrf_token %}
        {{ form.as_p }}  <!-- Отображаем форму -->
        <button type="submit">Сохранить</button>
    </form>
    <a href="{% url 'book_list' %}">Назад к списку книг</a>
</body>
</html>

Описание шаблона:

  • {% csrf_token %}: Защита от межсайтовой подделки запросов (CSRF).
  • {{ form.as_p }}: Отображает форму в виде параграфов.

Шаг 4: Настройка URL-адресов

Теперь добавим новый маршрут для нашего представления. Откройте файл urls.py в папке myapp и добавьте следующий код:

from django.urls import path
from .views import book_list, add_book

urlpatterns = [
    path('books/', book_list, name='book_list'),
    path('books/add/', add_book, name='add_book'),  # URL для добавления книги
]

Шаг 5: Запуск сервера и проверка

Запустите сервер разработки:

python manage.py runserver

Перейдите в браузере по адресу http://127.0.0.1:8000/books/add/, чтобы увидеть форму для добавления новой книги. Заполните форму и отправьте данные. После этого вы должны быть перенаправлены на страницу со списком книг, где новая книга будет отображаться.

Заключение

В этом уроке мы научились создавать формы в Django, обрабатывать пользовательский ввод и сохранять данные в базе данных. Формы — это мощный инструмент для взаимодействия с пользователями и получения информации.

Валидация форм

Валидация форм и обработка ошибок

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

Шаг 1: Обновление формы с дополнительной валидацией

Давайте добавим валидацию в нашу форму для добавления книг. Откройте файл forms.py и добавьте метод clean для проверки уникальности ISBN:

from django import forms
from .models import Book

class BookForm(forms.ModelForm):
    class Meta:
        model = Book
        fields = ['title', 'author', 'published_date', 'isbn']

    def clean_isbn(self):
        isbn = self.cleaned_data.get('isbn')
        if Book.objects.filter(isbn=isbn).exists():
            raise forms.ValidationError("Книга с таким ISBN уже существует.")
        return isbn

Описание кода:

  • clean_isbn: Метод для проверки уникальности поля ISBN. Если книга с таким ISBN уже существует, выбрасывается ошибка валидации.

Шаг 2: Обработка ошибок в представлении

Теперь нужно убедиться, что ошибки валидации отображаются в нашем представлении. Обновите файл views.py следующим образом:

from django.shortcuts import render, redirect
from .forms import BookForm

def add_book(request):
    if request.method == 'POST':
        form = BookForm(request.POST)
        if form.is_valid():
            form.save()  # Сохраняем книгу в базе данных
            return redirect('book_list')
    else:
        form = BookForm()  # Создаем пустую форму

    return render(request, 'myapp/add_book.html', {'form': form})

Ошибки будут автоматически добавляться к форме, если валидация не пройдет.

Шаг 3: Обновление шаблона для отображения ошибок

Теперь обновим шаблон add_book.html, чтобы отображать ошибки валидации. Измените файл следующим образом:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Добавить книгу</title>
</head>
<body>
    <h1>Добавить книгу</h1>
    <form method="post">
        {% csrf_token %}
        {{ form.as_p }}  <!-- Отображаем форму -->
        <button type="submit">Сохранить</button>
    </form>
    <a href="{% url 'book_list' %}">Назад к списку книг</a>

    {% if form.errors %}
        <ul>
            {% for field, errors in form.errors.items %}
                <li>{{ field }}: {{ errors|join:", " }}</li>
            {% endfor %}
        </ul>
    {% endif %}
</body>
</html>

Описание изменений:

  • {% if form.errors %}: Проверяем, есть ли ошибки в форме.
  • {{ field }}: {{ errors|join:", " }}: Отображаем ошибки для каждого поля.

Шаг 4: Проверка работы валидации

Запустите сервер разработки:

python manage.py runserver

Перейдите в браузере по адресу http://127.0.0.1:8000/books/add/. Попробуйте добавить книгу с существующим ISBN. Вы должны увидеть сообщение об ошибке, указывающее на то, что книга с таким ISBN уже существует.

Заключение

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

Работа с моделями

Работа с моделями и базами данных

В этом уроке мы изучим, как создавать и управлять моделями в Django, а также как взаимодействовать с базой данных.

Шаг 1: Определение модели

Начнем с создания модели для книг. Откройте файл models.py в папке вашего приложения и добавьте следующий код:

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=200)
    author = models.CharField(max_length=100)
    published_date = models.DateField()
    isbn = models.CharField(max_length=13, unique=True)

    def __str__(self):
        return self.title

Описание кода:

  • models.Model: Базовый класс для всех моделей в Django.
  • CharField: Поле для хранения строковых данных.
  • DateField: Поле для хранения даты.
  • unique=True: Гарантирует, что значение ISBN будет уникальным в базе данных.
  • str(): Метод, который возвращает строковое представление объекта.

Шаг 2: Создание и применение миграций

После определения модели нам нужно создать миграции и применить их к базе данных. Выполните следующие команды в терминале:

python manage.py makemigrations
python manage.py migrate
  • makemigrations: Создает файлы миграций на основе изменений в моделях.
  • migrate: Применяет миграции к базе данных.

Шаг 3: Работа с данными в базе данных

Теперь мы можем работать с данными в базе данных через Django ORM. Откройте консоль Django, выполнив команду:

python manage.py shell

Теперь вы можете создавать, читать, обновлять и удалять записи. Пример:

from myapp.models import Book

# Создание новой книги
new_book = Book(title="Пример книги", author="Автор", published_date="2023-01-01", isbn="1234567890123")
new_book.save()

# Чтение всех книг
all_books = Book.objects.all()
print(all_books)

# Обновление книги
book_to_update = Book.objects.get(id=1)  # Получаем книгу с id=1
book_to_update.title = "Обновленное название"
book_to_update.save()

# Удаление книги
book_to_delete = Book.objects.get(id=1)
book_to_delete.delete()

Описание операций:

  • create: Создает новую запись в базе данных.
  • all(): Получает все записи из таблицы.
  • get(): Получает одну запись по заданному критерию.
  • save(): Сохраняет изменения в записи.
  • delete(): Удаляет запись из базы данных.

Шаг 4: Использование админки Django

Django предоставляет мощный интерфейс администратора для управления моделями. Чтобы использовать его, зарегистрируйте вашу модель в admin.py:

from django.contrib import admin
from .models import Book

admin.site.register(Book)

Теперь запустите сервер разработки и перейдите по адресу http://127.0.0.1:8000/admin/. Вам нужно будет ввести учетные данные администратора. Если у вас еще нет суперпользователя, создайте его с помощью команды:

python manage.py createsuperuser

Заключение

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

Маршрутизация

Создание представлений и маршрутизация

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

Шаг 1: Определение представлений

Представления в Django отвечают за обработку запросов и возврат ответов. Давайте создадим простое представление для отображения списка книг. Откройте файл views.py в вашем приложении и добавьте следующий код:

from django.shortcuts import render
from .models import Book

def book_list(request):
    books = Book.objects.all()  # Получаем все книги из базы данных
    return render(request, 'myapp/book_list.html', {'books': books})

Описание кода:

  • render: Функция для рендеринга шаблона с контекстом.
  • Book.objects.all(): Получает все записи из модели Book.
  • 'myapp/book_list.html': Путь к шаблону, который будет использоваться для отображения.

Шаг 2: Настройка маршрутов

Теперь необходимо настроить маршруты, чтобы связать URL с нашим представлением. Откройте файл urls.py в вашем приложении (если его нет, создайте) и добавьте следующий код:

from django.urls import path
from .views import book_list

urlpatterns = [
    path('books/', book_list, name='book_list'),  # URL для списка книг
]

Описание кода:

  • path: Функция для определения маршрута.
  • 'books/': URL, по которому будет доступно наше представление.
  • book_list: Имя функции представления, которое будет вызвано при обращении к этому URL.

Шаг 3: Создание шаблона

Теперь создадим шаблон для отображения списка книг. Создайте файл book_list.html в папке templates/myapp/ и добавьте следующий код:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Список книг</title>
</head>
<body>
    <h1>Список книг</h1>
    <ul>
        {% for book in books %}
            <li>{{ book.title }} - {{ book.author }} ({{ book.published_date }})</li>
        {% empty %}
            <li>Книги не найдены.</li>
        {% endfor %}
    </ul>
    <a href="{% url 'add_book' %}">Добавить книгу</a>
</body>
</html>

Описание кода:

  • {% for book in books %}: Цикл для перебора книг и их отображения.
  • {% empty %}: Отображается, если список книг пуст.
  • {% url 'add_book' %}: Ссылка на представление для добавления новой книги.

Шаг 4: Проверка работы

Запустите сервер разработки:

python manage.py runserver

Перейдите в браузере по адресу http://127.0.0.1:8000/books/. Вы должны увидеть список книг, которые вы добавили ранее. Если книг нет, отобразится сообщение "Книги не найдены".

Заключение

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

Пользовательские формы

Формы и обработка данных

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

Шаг 1: Создание формы

Для начала создадим форму для добавления новой книги. Создайте файл forms.py в вашем приложении и добавьте следующий код:

from django import forms
from .models import Book

class BookForm(forms.ModelForm):
    class Meta:
        model = Book
        fields = ['title', 'author', 'published_date', 'isbn']

Описание кода:

  • forms.ModelForm: Класс для создания формы на основе модели.
  • Meta: Вложенный класс, который указывает модель и поля, которые будут включены в форму.

Шаг 2: Обновление представления для обработки формы

Теперь обновим представление book_list для обработки формы добавления книги. Откройте файл views.py и добавьте следующий код:

from django.shortcuts import render, redirect
from .models import Book
from .forms import BookForm

def book_list(request):
    books = Book.objects.all()

    if request.method == 'POST':
        form = BookForm(request.POST)
        if form.is_valid():
            form.save()  # Сохраняем новую книгу в базе данных
            return redirect('book_list')  # Перенаправляем на страницу списка книг
    else:
        form = BookForm()

    return render(request, 'myapp/book_list.html', {'books': books, 'form': form})

Описание кода:

  • request.method == 'POST': Проверяем, была ли отправлена форма.
  • form.is_valid(): Проверяем, валидны ли данные формы.
  • form.save(): Сохраняем данные в базе данных.
  • redirect('book_list'): Перенаправляем пользователя на страницу списка книг после успешного добавления.

Шаг 3: Обновление шаблона

Теперь обновим шаблон book_list.html, чтобы отобразить форму. Замените содержимое файла на следующее:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Список книг</title>
</head>
<body>
    <h1>Список книг</h1>
    <ul>
        {% for book in books %}
            <li>{{ book.title }} - {{ book.author }} ({{ book.published_date }})</li>
        {% empty %}
            <li>Книги не найдены.</li>
        {% endfor %}
    </ul>

    <h2>Добавить новую книгу</h2>
    <form method="post">
        {% csrf_token %}
        {{ form.as_p }}  <!-- Отображение формы -->
        <button type="submit">Добавить книгу</button>
    </form>
</body>
</html>

Описание кода:

  • {% csrf_token %}: Защита от межсайтовой подделки запросов.
  • {{ form.as_p }}: Отображает форму в виде параграфов.

Шаг 4: Проверка работы

Запустите сервер разработки, если он еще не запущен:

python manage.py runserver

Перейдите в браузере по адресу http://127.0.0.1:8000/books/. Вы увидите список книг и форму для добавления новой книги. Заполните форму и нажмите кнопку "Добавить книгу". После успешного добавления вы будете перенаправлены на страницу со списком книг.

Заключение

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

Rest API

Создание и использование API с Django REST Framework

В этом уроке мы изучим, как создать API для нашего приложения с помощью Django REST Framework (DRF). Мы научимся создавать сериализаторы, представления и маршруты для взаимодействия с данными.

Шаг 1: Установка Django REST Framework

Сначала установите Django REST Framework, если он еще не установлен. Выполните следующую команду:

pip install djangorestframework

После установки добавьте rest_framework в список INSTALLED_APPS в вашем файле settings.py:

INSTALLED_APPS = [
    ...
    'rest_framework',
]

Шаг 2: Создание сериализатора

Сериализаторы позволяют преобразовывать модели в JSON и обратно. Создайте файл serializers.py в вашем приложении и добавьте следующий код:

from rest_framework import serializers
from .models import Book

class BookSerializer(serializers.ModelSerializer):
    class Meta:
        model = Book
        fields = ['id', 'title', 'author', 'published_date', 'isbn']

Описание кода:

  • serializers.ModelSerializer: Класс для создания сериализатора на основе модели.
  • fields: Указывает, какие поля модели будут включены в сериализатор.

Шаг 3: Создание представлений

Теперь создадим представления для обработки запросов. Откройте файл views.py и добавьте следующий код:

from rest_framework import generics
from .models import Book
from .serializers import BookSerializer

class BookListCreate(generics.ListCreateAPIView):
    queryset = Book.objects.all()
    serializer_class = BookSerializer

class BookDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = Book.objects.all()
    serializer_class = BookSerializer

Описание кода:

  • ListCreateAPIView: Представление для получения списка объектов и создания новых.
  • RetrieveUpdateDestroyAPIView: Представление для получения, обновления и удаления объектов.

Шаг 4: Настройка маршрутов

Теперь нужно настроить маршруты для нашего API. Откройте файл urls.py и добавьте следующий код:

from django.urls import path
from .views import BookListCreate, BookDetail

urlpatterns = [
    path('api/books/', BookListCreate.as_view(), name='book-list-create'),
    path('api/books/<int:pk>/', BookDetail.as_view(), name='book-detail'),
]

Описание кода:

  • path('api/books/'): URL для получения списка книг и создания новой книги.
  • path('api/books//'): URL для получения, обновления или удаления конкретной книги по её идентификатору.

Шаг 5: Проверка работы API

Запустите сервер разработки:

python manage.py runserver

Теперь вы можете протестировать API, используя инструменты, такие как Postman или cURL.

Примеры запросов:

  • GET http://127.0.0.1:8000/api/books/ - Получить список всех книг.
  • POST http://127.0.0.1:8000/api/books/ - Создать новую книгу (в теле запроса передайте JSON с данными книги).
  • GET http://127.0.0.1:8000/api/books/1/ - Получить информацию о книге с ID 1.
  • PUT http://127.0.0.1:8000/api/books/1/ - Обновить книгу с ID 1 (в теле запроса передайте обновленные данные).
  • DELETE http://127.0.0.1:8000/api/books/1/ - Удалить книгу с ID 1.

Заключение

В этом уроке мы научились создавать API с использованием Django REST Framework, включая создание сериализаторов, представлений и маршрутов. API позволяет взаимодействовать с вашими данными через HTTP-запросы, что является важной частью современных веб-приложений.