@mynameiswisethanyesturday
Python developer

Как токеном получить авторизированый доступ DRF?

Использую стандартные библиотеки для создания токенов.

Зарегестрировал выполнил миграции
'rest_framework.authtoken',
]

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.TokenAuthentication',
        'rest_framework.authentication.SessionAuthentication',
    ]
}


Есть две функции которые работают
from django.contrib.auth.models import User
from django.db import IntegrityError
from django.views.decorators.csrf import csrf_exempt
from rest_framework import generics, permissions
from .serizalizers import TodoSeralizer, TodoCompleteSeralizer
from todo.models import Todo
from django.utils import timezone
from django.http import JsonResponse
from rest_framework.authtoken.models import Token
from django.contrib.auth import authenticate

@csrf_exempt
def signup(request):
    if request.method == 'POST':
        try:
            user = User.objects.create_user(request.POST['username'], password=request.POST['password'])
            user.save()
            token = Token.objects.create(user=user)
            return JsonResponse({'token': str(token)}, status=201)
        except IntegrityError:
            return JsonResponse(({'error': 'That username has already been taken. Please choose a new username'}),
                                status=201)

@csrf_exempt
def login(request):
    if request.method == 'POST':
        user = authenticate(request, username= request.POST['username'], password = request.POST['password'])
        if user is None:
            return JsonResponse(({'error': 'Check username or password'}),
                                status=201)
        else:
            try:
                token = Token.objects.get(user=user)
            except:
                token = Token.objects.create(user=user)
            return JsonResponse({'token': str(token)}, status=200)


Регистрация токена проходит он отображается в админке супер пользователя
5fb3f668cebfd217655853.png

Но когда делаю запросы для того, чтоб получить данные
curl -X GET 127.0.0.1:8000/api/todos -H 'Authorization: Token b4b0a7da9fef962e06f5f2f8756349a5404579ed'
5fb3f6cb32301835183284.png
5fb3f7932135c239652915.png

Не знаю, что делать. Данные и как обращаться брал из Документации DRF

Выходит такое вот...
Прошу помощи..
  • Вопрос задан
  • 254 просмотра
Пригласить эксперта
Ответы на вопрос 1
@organica
Посмотри в сторону djoser , сделает всю работу за тебя
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы