【问题标题】:how to create a comment system using drf如何使用 drf 创建评论系统
【发布时间】:2021-08-04 14:46:29
【问题描述】:

我正在做一个项目,该项目要求用户尽可能使用 django rest_framework 提供反馈 但我在这样做时遇到了一些困难 下面是我的代码 sn-p & err msg

##模式文件

class Review(models.Model):
    school = models.ForeignKey(
        Profile, on_delete=models.CASCADE, related_name='review')
    name = models.CharField(max_length=250, blank=True, null=True)
    reviewer_email = models.EmailField()
    rating = models.CharField(
        max_length=250, blank=True, null=True)

    review = models.TextField()

##serializer 文件


class ReviewSerializer(serializers.ModelSerializer):
    class Meta:
        model = Review
        fields = ('name',  'review', 'id', 'reviewer_email', 'rating')
 
    def perform_create(self, serializer):
        id = self.request
        print(self.request.user.profile)
        serializer.save(school=self.request.user.profile.school_id)

##apiView

class ReviewAPIView(generics.CreateAPIView):
    serializer_class = ReviewSerializer
    permissions = [permissions.AllowAny]
    queryset = Review.objects.all()

错误消息

    File "/home/olaneat/Desktop/files/project/django/schMrk/lib/python3.8/site-packages/rest_framework/views.py", line 509, in dispatch
    response = self.handle_exception(exc)
  File "/home/olaneat/Desktop/files/project/django/schMrk/lib/python3.8/site-packages/rest_framework/views.py", line 469, in handle_exception
    self.raise_uncaught_exception(exc)
  File "/home/olaneat/Desktop/files/project/django/schMrk/lib/python3.8/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception
    raise exc
  File "/home/olaneat/Desktop/files/project/django/schMrk/lib/python3.8/site-packages/rest_framework/views.py", line 506, in dispatch
    response = handler(request, *args, **kwargs)
  File "/home/olaneat/Desktop/files/project/django/schMrk/lib/python3.8/site-packages/rest_framework/generics.py", line 190, in post
    return self.create(request, *args, **kwargs)
  File "/home/olaneat/Desktop/files/project/django/schMrk/lib/python3.8/site-packages/rest_framework/mixins.py", line 19, in create
    self.perform_create(serializer)
  File "/home/olaneat/Desktop/files/project/django/schMrk/sch-market/schoolDetail/apiviews.py", line 213, in perform_create
    print(self.request.user.profile)
AttributeError: 'AnonymousUser' object has no attribute 'profile'
[04/Aug/2021 16:00:59] "POST /school-detail/add-review HTTP/1.1" 500 105554

谁能帮忙

【问题讨论】:

    标签: django django-rest-framework django-serializer


    【解决方案1】:

    您没有共享请求正文。 我的猜测(从错误中)是你没有指定它应该与之相关的学校对象的 id

    【讨论】:

      【解决方案2】:

      您应该限制非授权用户的访问。否则,self.request.user 可能是一个 AnonymousUser 对象,它没有配置文件关系。

      permissions = [permissions.IsAuthenticated]
      

      【讨论】:

        猜你喜欢
        • 2014-12-21
        • 1970-01-01
        • 2019-02-23
        • 1970-01-01
        • 2015-10-02
        • 2012-01-13
        • 2021-05-02
        • 1970-01-01
        • 2023-04-04
        相关资源
        最近更新 更多