Ответ
Система шаблонов Django и Django REST Framework (DRF) служат разным целям в веб-разработке, хотя обе являются частью экосистемы Django.
1. Система шаблонов Django (Django Templates)
- Назначение: Используется для серверной генерации HTML-страниц (Server-Side Rendering, SSR). Основная задача — динамически создавать полноценные веб-страницы, которые затем отправляются браузеру пользователя.
- Принцип работы: Работает с файлами шаблонов (
.html
), в которые подставляются данные из контекста представления (view). Результатом является готовая HTML-страница. -
Пример:
from django.shortcuts import render from django.http import HttpRequest, HttpResponse def home(request: HttpRequest) -> HttpResponse: context = {'title': 'Главная страница', 'user_name': 'Гость'} return render(request, 'home.html', context)
В
home.html
можно использовать{{ title }}
и{{ user_name }}
.
2. Django REST Framework (DRF)
- Назначение: Предназначен для создания RESTful API (Application Programming Interface). Его цель — предоставлять структурированные данные (обычно в JSON или XML) клиентским приложениям (например, SPA на React/Vue, мобильным приложениям, другим сервисам), а не готовые HTML-страницы.
- Принцип работы: Сериализует сложные объекты Python (модели Django) в форматы, понятные клиенту, и десериализует входящие данные. Возвращает данные, а не разметку.
-
Пример:
from rest_framework.views import APIView from rest_framework.response import Response from rest_framework import status class UserListAPI(APIView): def get(self, request): # В реальном приложении здесь была бы сериализация объектов User users = ['Alice', 'Bob', 'Charlie'] return Response({'users': users}, status=status.HTTP_200_OK)
Ключевые отличия:
- Формат ответа:
- Django Templates: Возвращает HTML (полноценные веб-страницы).
- DRF: Возвращает структурированные данные (чаще всего JSON, иногда XML).
- Цель:
- Django Templates: Создание традиционных веб-сайтов с серверным рендерингом.
- DRF: Создание API для клиентских приложений (фронтенд, мобильные, IoT).
- Обработка данных:
- Django Templates: Подставляет данные в HTML-шаблоны.
- DRF: Использует сериализаторы для преобразования сложных объектов Python в примитивные типы данных и обратно.
- Взаимодействие с клиентом:
- Django Templates: Клиент получает готовую страницу и отображает её.
- DRF: Клиент получает данные и сам отвечает за их отображение (например, через JavaScript на фронтенде).
- Аутентификация/Авторизация:
- Django Templates: Использует сессии и куки для аутентификации пользователей.
- DRF: Поддерживает различные механизмы аутентификации, специфичные для API, такие как токены (Token, JWT), OAuth.
Выбор между ними зависит от архитектуры приложения: если нужен традиционный веб-сайт, используйте шаблоны Django; если требуется API для разделенного фронтенда или мобильного приложения, DRF — это стандартное решение.