⚡ Шпаргалка по заголовкам и форматам
| Метод |
Заголовок Authorization |
| BasicAuthentication | Basic base64(user:pass) |
| TokenAuthentication | Token <token_key> |
| JWTAuthentication | Bearer <access_token> |
Установка пакетов
# SimpleJWT
pip install djangorestframework-simplejwt
# django-filter (для DjangoFilterBackend)
pip install django-filter
Команды manage.py
# После добавления rest_framework.authtoken в INSTALLED_APPS
python manage.py migrate
# Создать суперпользователя для тестирования
python manage.py createsuperuser
# Запустить сервер
python manage.py runserver
Настройки settings.py — BasicAuthentication
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.BasicAuthentication',
],
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.IsAuthenticated',
],
}
Настройки settings.py — TokenAuthentication
INSTALLED_APPS = [
# ...
'rest_framework',
'rest_framework.authtoken',
]
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication',
],
}
Настройки settings.py — JWTAuthentication
from datetime import timedelta
INSTALLED_APPS = [
# ...
'rest_framework_simplejwt',
]
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework_simplejwt.authentication.JWTAuthentication',
],
}
SIMPLE_JWT = {
'ACCESS_TOKEN_LIFETIME': timedelta(minutes=5),
'REFRESH_TOKEN_LIFETIME': timedelta(days=1),
}
URL-маршруты
# TokenAuthentication: получение токена
from rest_framework.authtoken.views import obtain_auth_token
urlpatterns = [
path('api-token-auth/', obtain_auth_token, name='api_token_auth'),
]
# JWTAuthentication: получение и обновление
from rest_framework_simplejwt.views import TokenObtainPairView, TokenRefreshView
urlpatterns = [
path('api/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
]
Атрибуты в представлениях
from rest_framework.authentication import BasicAuthentication, TokenAuthentication
from rest_framework_simplejwt.authentication import JWTAuthentication
from rest_framework.permissions import (
IsAuthenticated, IsAuthenticatedOrReadOnly, IsAdminUser
)
class MyView(ListCreateAPIView):
authentication_classes = [TokenAuthentication] # переопределяет глобальное
permission_classes = [IsAuthenticated]
Форматы заголовков Authorization
| Метод |
Формат |
Пример |
| BasicAuthentication |
Basic base64(user:pass) |
В Postman: вкладка Authorization → Basic Auth, ввести логин и пароль |
| TokenAuthentication |
Token <key> |
Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b |
| JWTAuthentication |
Bearer <access> |
Bearer eyJhbGci... |
Классы разрешений — быстрая таблица
| Класс |
Кто имеет доступ |
AllowAny | Все, включая анонимных |
IsAuthenticated | Только аутентифицированные |
IsAuthenticatedOrReadOnly | GET — все; POST/PUT/DELETE — аутентифицированные |
IsAdminUser | Только пользователи с is_staff=True |