Аутентификация токена не работает в Django Rest Framework после передачи токенаPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Аутентификация токена не работает в Django Rest Framework после передачи токена

Сообщение Anonymous »

Аутентификация сеанса работает правильно, поскольку я получаю сообщение «Вы аутентифицированы!» если я вхожу в систему от имени администратора 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»