Django rest_framework oAuth2 APIView error



我正在制作Django应用程序API,授权用户可以在其中发布消息,其他用户可以浏览消息并对消息进行点赞/不喜欢/评论(推特风格(。

我已经实现了oAuth2并进行了测试。

API在管理面板上运行良好,但当我通过url访问它时,它会给出错误:

在此处输入图像描述

我的models.py类是:

class Posts(models.Model):

def expirationTimeCalculation(self):
EXPIRATION_DURATION = 86400 #time in seconds
expirationTime = self.creationTimestamp + timedelta(seconds = EXPIRATION_DURATION)
return expirationTime
def postLiveStatus(self):
return (self.expirationTimestamp > timezone.now)
def postLiveTimeRemaining(self):
if (self.expirationTimestamp > timezone.now):
return (self.expirationTimestamp - timezone.now).total_seconds()
else:
return 0

postIdentifier = models.IntegerField()  
title = models.CharField(max_length=100)
message = models.TextField()
topic = models.ManyToManyField('Topics')
creationTimestamp = models.DateTimeField(default=timezone.now)
expirationTimestamp = property(expirationTimeCalculation)
post_owner = models.ForeignKey(AppUser, related_name='post_owner', on_delete=models.CASCADE)
isLive = property(postLiveStatus)
post_likes = models.ForeignKey('Likes', related_name="post_likes", on_delete=models.CASCADE)
post_dislikes = models.ForeignKey('Dislikes', related_name="post_dislikes", on_delete=models.CASCADE)
post_comments = models.ForeignKey('Comments', related_name="post_comments", on_delete=models.CASCADE)

def __str__(self):
return self.title

class Topics(models.Model):
TOPICS = [('P','Politics'),('H','Health'),('S','Sports'),('T','Tech')]
topicName = models.CharField(max_length=2, choices=TOPICS, blank=False)

class Likes(models.Model):
isLiked = models.BooleanField(null=True)
likes_owner = models.ForeignKey(AppUser, related_name='likes_owner', on_delete=models.CASCADE)
post = models.ForeignKey(Posts, related_name='likes', on_delete = models.CASCADE)
class Dislikes(models.Model):
isDisliked = models.BooleanField(null=True)
dislikes_owner = models.ForeignKey(AppUser, related_name='dislikes_owner', on_delete=models.CASCADE)
post = models.ForeignKey(Posts, related_name='dislikes', on_delete = models.CASCADE)
class Comments(models.Model):
comment = models.TextField(null=True)
comments_owner = models.ForeignKey(AppUser, related_name='comments_owner', on_delete=models.CASCADE)
post = models.ForeignKey(Posts, related_name='comments', on_delete = models.CASCADE)

序列化程序类是:

class CommentsSerializer(serializers.ModelSerializer):
comments_owner = CreateUserSerializer()
class Meta:
model = Comments
fields = ('comment', 'comments_owner')

class DislikesSerializer(serializers.ModelSerializer):
dislikes_owner = CreateUserSerializer()
class Meta:
model = Dislikes
fields = ('isDisliked', 'dislikes_owner')
class LikesSerializer(serializers.ModelSerializer):
likes_owner = CreateUserSerializer()
class Meta:
model = Likes
fields = ('isLiked', 'likes_owner')
class TopicsSerializer(serializers.ModelSerializer):
class Meta:
model = Topics
fields = ('topicName')
class PostsSerializer(serializers.ModelSerializer):
class Meta:
model = Posts
fields = ('postIdentifier', 'title', 'message', 'topic', 'creationTimestamp', 'expirationTimestamp', 'isLive', 'post_owner', 'post_likes', 'post_dislikes', 'post_comments')

视图类为:

from rest_framework.generics import ListAPIView
from .models import Posts
from .serializers import PostsSerializer

class PostsView(ListAPIView):
queryset = Posts.objects.all()
serilaizer_class = PostsSerializer

URLS的主要类别是:

from django.contrib import admin
from django.urls import path, include
from django.conf import settings
import posts_backend.views

urlpatterns = [
path('admin/', admin.site.urls),
path('o/', include('oauth2_provider.urls', namespace='oauth2_provider')), #Adding oAuth2 privider URLS to the url path
path('authentication/', include('accounts.urls')), #Creating authentication endpoints http://10.61.64.150:8000/authentication/ for performing authentication
path('v1/posts/', posts_backend.views.PostsView.as_view(),), # Version 1 of the API
]

有人能告诉我为什么会出现这个错误以及如何解决吗?

尝试将属性从serilaizer_class重命名为serializer_class

最新更新