В 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.