Как связать пользователя с кастомной моделью в Django REST Framework?

В Django REST Framework можно связать пользователя с кастомной моделью, используя аутентификацию и авторизацию Django и его встроенные модели User и Permission.

1. Создание кастомной модели:

Сначала вам необходимо создать кастомную модель, которая будет связана с пользователем. Например, если вы хотите создать модель профиля пользователя, вы можете создать файл models.py в вашем приложении и определить свою кастомную модель, которая будет наследоваться от User модели Django:

from django.contrib.auth.models import AbstractUser
from django.db import models

class UserProfile(AbstractUser):
    # Добавьте здесь свои пользовательские поля
    pass

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

Затем вам нужно создать сериализатор для вашей кастомной модели, который будет использоваться Django REST Framework для сериализации и десериализации данных. В файле serializers.py в вашем приложении добавьте:

from rest_framework import serializers
from .models import UserProfile

class UserProfileSerializer(serializers.ModelSerializer):
    class Meta:
        model = UserProfile
        fields = '__all__'

3. Настройка представления:

Вам также потребуется представление для обработки запросов и ответов для вашей кастомной модели. В файле views.py в вашем приложении добавьте:

from rest_framework import viewsets
from .models import UserProfile
from .serializers import UserProfileSerializer

class UserProfileViewSet(viewsets.ModelViewSet):
    queryset = UserProfile.objects.all()
    serializer_class = UserProfileSerializer

4. Настройка URLs:

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

from django.urls import include, path
from rest_framework import routers
from .views import UserProfileViewSet

router = routers.DefaultRouter()
router.register(r'userprofiles', UserProfileViewSet)

urlpatterns = [
    path('', include(router.urls)),
]

5. Настройка аутентификации и авторизации:

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

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.BasicAuthentication',
    ],
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAuthenticated',
    ],
}

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

Теперь каждый пользователь будет связан с вашей кастомной моделью UserProfile, и вы сможете выполнять операции CRUD (создание, чтение, обновление и удаление) с использованием API Django REST Framework.