Django Rest框架Simplejwt不使用modheader

Django Rest框架Simplejwt不使用modheader,django,django-rest-framework,django-rest-framework-simplejwt,Django,Django Rest Framework,Django Rest Framework Simplejwt,我正在做一些项目,并试图打开书的列表视图。我使用Django Rest框架Simplejwt生成令牌和用于身份验证的mod头。当我试图为管理员用户等用户请求令牌并将其输入mod头时,该请求仍然未经授权。我试了好几次,但还是不起作用 视图.py from rest_framework import generics, permissions from rest_framework.permissions import IsAuthenticated from rest_framework.exce

我正在做一些项目,并试图打开书的列表视图。我使用Django Rest框架Simplejwt生成令牌和用于身份验证的mod头。当我试图为管理员用户等用户请求令牌并将其输入mod头时,该请求仍然未经授权。我试了好几次,但还是不起作用

视图.py

from rest_framework import generics, permissions
from rest_framework.permissions import IsAuthenticated
from rest_framework.exceptions import ValidationError

from django.contrib.auth.models import User

from .models import Book
from .serializers import (
                          BookSerializer,
                          RegistrationSerializer 
                          )
    
    
class BookCreateView(generics.CreateAPIView):
    """Create a Book"""
    queryset = Book.objects.all()
    serializer_class = BookSerializer
    permission_classes = (IsAuthenticated,)
    
    def perform_create(self, serializer):
        serializer.save(user=self.request.user)

class BookListView(generics.ListAPIView):
    """Show all books"""
    serializer_class = BookSerializer
    permission_classes = (IsAuthenticated,)
    
    def get_queryset(self):
        user = self.request.user
        return Book.objects.filter(user=user)


class BookDetailView(generics.RetrieveAPIView):
    """Show detail of the book"""
    serializer_class = BookSerializer
    permission_classes = (IsAuthenticated,)
    
    def get_queryset(self):
        user = self.request.user
        return Book.objects.filter(user=user)
    

class BookUpdateView(generics.RetrieveUpdateDestroyAPIView):
    """update detail of the book"""
    queryset = Book.objects.all()
    serializer_class = BookSerializer
    permission_classes = (IsAuthenticated,)
    
    
    def delete(self, request, *args, **kwargs):
        book = Book.objects.filter(user=self.request.user, pk=kwargs['pk'])
        if book.exists():
            return self.destroy(request, *args, **kwargs)
        else:
            raise ValidationError('Book is not yours!')
    
    def perform_update(self, serializer, **kwargs):
        book = Book.objects.get(pk=self.kwargs['pk'])
        if self.request.user != book.user:
            raise ValidationError("You are not the owner of this book")
        serializer.save(user=self.request.user, book=book)
    

class UserRegistrationView(generics.CreateAPIView):
    queryset = User.objects.all()
    serializer_class = RegistrationSerializer
    permission_classes = [permissions.AllowAny]
from rest_framework import serializers
from django.contrib.auth.models import User
from .models import Book

class BookSerializer(serializers.ModelSerializer):
    """Serializer for Book"""
    
    class Meta:
        model = Book
        fields = (
            'id','user',
            'title', 'author',
            'description', 'image')
        read_only_fields = ('id', 'user')
        
        
class RegistrationSerializer(serializers.ModelSerializer):
    password = serializers.CharField(style={'input type':'password'}, write_only=True)
    class Meta:
        model = User
        fields = ('username', 'email', 'password')
        
    def create(self, validated_data):
        user = User.objects.create(
                                   username=validated_data['username'],
                                   email=validated_data['email'])
        user.set_password(validated_data['password'])
        user.save()
        return user
序列化程序.py

from rest_framework import generics, permissions
from rest_framework.permissions import IsAuthenticated
from rest_framework.exceptions import ValidationError

from django.contrib.auth.models import User

from .models import Book
from .serializers import (
                          BookSerializer,
                          RegistrationSerializer 
                          )
    
    
class BookCreateView(generics.CreateAPIView):
    """Create a Book"""
    queryset = Book.objects.all()
    serializer_class = BookSerializer
    permission_classes = (IsAuthenticated,)
    
    def perform_create(self, serializer):
        serializer.save(user=self.request.user)

class BookListView(generics.ListAPIView):
    """Show all books"""
    serializer_class = BookSerializer
    permission_classes = (IsAuthenticated,)
    
    def get_queryset(self):
        user = self.request.user
        return Book.objects.filter(user=user)


class BookDetailView(generics.RetrieveAPIView):
    """Show detail of the book"""
    serializer_class = BookSerializer
    permission_classes = (IsAuthenticated,)
    
    def get_queryset(self):
        user = self.request.user
        return Book.objects.filter(user=user)
    

class BookUpdateView(generics.RetrieveUpdateDestroyAPIView):
    """update detail of the book"""
    queryset = Book.objects.all()
    serializer_class = BookSerializer
    permission_classes = (IsAuthenticated,)
    
    
    def delete(self, request, *args, **kwargs):
        book = Book.objects.filter(user=self.request.user, pk=kwargs['pk'])
        if book.exists():
            return self.destroy(request, *args, **kwargs)
        else:
            raise ValidationError('Book is not yours!')
    
    def perform_update(self, serializer, **kwargs):
        book = Book.objects.get(pk=self.kwargs['pk'])
        if self.request.user != book.user:
            raise ValidationError("You are not the owner of this book")
        serializer.save(user=self.request.user, book=book)
    

class UserRegistrationView(generics.CreateAPIView):
    queryset = User.objects.all()
    serializer_class = RegistrationSerializer
    permission_classes = [permissions.AllowAny]
from rest_framework import serializers
from django.contrib.auth.models import User
from .models import Book

class BookSerializer(serializers.ModelSerializer):
    """Serializer for Book"""
    
    class Meta:
        model = Book
        fields = (
            'id','user',
            'title', 'author',
            'description', 'image')
        read_only_fields = ('id', 'user')
        
        
class RegistrationSerializer(serializers.ModelSerializer):
    password = serializers.CharField(style={'input type':'password'}, write_only=True)
    class Meta:
        model = User
        fields = ('username', 'email', 'password')
        
    def create(self, validated_data):
        user = User.objects.create(
                                   username=validated_data['username'],
                                   email=validated_data['email'])
        user.set_password(validated_data['password'])
        user.save()
        return user

我输入了正确的令牌(复制和粘贴),但仍然无法进行身份验证。

您正在使用“令牌”。但是你的代币应该像“持票人”


谢谢。我真的很感谢你的帮助。