Аутентификация сеанса работает правильно, поскольку я получаю сообщение «Вы аутентифицированы!» если я вхожу в систему от имени администратора Django, но аутентификация по токену не работает, и я получаю сообщение об ошибке «Учетные данные для аутентификации не предоставлены».
pip зависает
Django==5.1.2
django-filter==24.3
djangorestframework==3.15.2
djangorestframework-simplejwt==5.3.1
Ниже приведены файлы проекта
views.py
from django.shortcuts import render
from rest_framework import generics, permissions
from .models import Artist
from .serializers import ArtistSerializer
from rest_framework.authentication import TokenAuthentication
class ArtistListCreateView(generics.ListCreateAPIView):
queryset = Artist.objects.all()
serializer_class = ArtistSerializer
permission_classes = [permissions.IsAuthenticated]
authentication_classes = [TokenAuthentication]
def perform_create(self, serializer):
serializer.save(user=self.request.user)
class ArtistDetailView(generics.RetrieveUpdateDestroyAPIView):
queryset = Artist.objects.all()
serializer_class = ArtistSerializer
permission_classes = [permissions.IsAuthenticated]
def get_queryset(self):
print("Authenticated user:", self.request.user)
return Artist.objects.filter(user=self.request.user)
serializers.py
from rest_framework import serializers
from .models import Artist
class ArtistSerializer(serializers.ModelSerializer):
class Meta:
model = Artist
fields = ['id', 'user', 'phone_country_code', 'phone', 'location',
'created_at', 'updated_at']
read_only_fields = ['id', 'user','created_at', 'updated_at']
models.py
from django.contrib.auth import get_user_model
from django.db import models
User = get_user_model()
class Artist(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='artist_profile')
phone_country_code = models.CharField(max_length=10)
phone = models.CharField(max_length=15)
location = models.CharField(max_length=255)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return self.user.username
urls.py
from django.urls import path
from .views import ArtistListCreateView, ArtistDetailView
urlpatterns = [
path('artists/', ArtistListCreateView.as_view(), name='artist-list-create'),
path('artists//', ArtistDetailView.as_view(), name='artist-detail'),
]
Я попробовал обновить файл settings.py, указав следующую информацию:
settings.py
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication',
'rest_framework_simplejwt.authentication.JWTAuthentication',
'rest_framework.authentication.SessionAuthentication'
],
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.IsAuthenticated',
],
}
Я могу сгенерировать токен при входе в систему и использовать его при следующем завитке в Postman для регистрации в модели Artist, но получаю ту же ошибку «Учетные данные для аутентификации не были предоставлены»
curl -X POST http://127.0.0.1:8000/api/artists/
-H "Authorization: Token your_new_token_here"
-H "Content-Type: application/json"
-d '{ "phone_country_code": "+1", "phone": "1234567890", "location": "New York", }'
Подробнее здесь: https://stackoverflow.com/questions/791 ... g-the-toke
Аутентификация токена не работает в Django Rest Framework после передачи токена ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Возможна ли аутентификация сеанса в Django Rest Framework с мобильным клиентом?
Anonymous » » в форуме Python - 0 Ответы
- 9 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Аутентификация Keycloak с использованием токена Google id/токена доступа
Anonymous » » в форуме Android - 0 Ответы
- 18 Просмотры
-
Последнее сообщение Anonymous
-