gpt4 book ai didi

python - Django Rest Framework Api 查看 GET

转载 作者:行者123 更新时间:2023-12-05 05:01:15 26 4
gpt4 key购买 nike

在我的代码中,我有一个推文模型,在 tweet_list_view 中,我想将推文列表显示为 API View 。

@api_view(['GET'])
def tweet_list_view(request, *args, **kwargs):
qs = Tweet.objects.all().order_by('-date_posted')
serializer = TweetSerializer(data=qs, many=True)
return Response(serializer.data)

这就是我得到的结果。

AssertionError at /tweets/
When a serializer is passed a `data` keyword argument you must call `.is_valid()` before attempting to access the serialized `.data` representation.
You should either call `.is_valid()` first, or access `.initial_data` instead.

所以我调用了 .is_valid 方法,如下所示:

@api_view(['GET'])
def tweet_list_view(request, *args, **kwargs):
qs = Tweet.objects.all().order_by('-date_posted')
serializer = TweetSerializer(data=qs, many=True)
if serializer.is_valid():
return Response(serializer.data, status=201)
return Response({}, status=400)

然后我得到:

TemplateDoesNotExist at /tweets/
rest_framework/api.html

在serializers.py类 TweetSerializer(序列化器.ModelSerializer):类元:模型 = 推文fields = ['content', 'date_posted', 'likes']

模型.py

class Tweet(models.Model):
content = models.TextField(blank=True, null=True)
image = models.FileField(upload_to='images/', blank=True, null=True)
user = models.ForeignKey(User, on_delete=models.CASCADE, blank=True, null=True)
date_posted = models.DateTimeField(default=timezone.now)
likes = models.IntegerField(default=0)

def __str__(self):
return self.content

class Meta:
ordering = ['-date_posted']

它正在寻找一个模板,但它应该使用默认的 Django 模板。有什么办法可以解决这个问题吗?

最佳答案

更新:

忘记了 api_view 前面的 @。添加它。还添加了 renderer_class (jsonrenderer) 以确保避免错误。


只有当你有一个 post、put 或 patch View 时,你才需要使用序列化器的数据属性。在您的情况下,只需在没有数据属性的情况下尝试它,它应该没问题

from rest_framework.renderers import JSONRenderer

@api_view(['GET'])
@renderer_classes([JSONRenderer])
def tweet_list_view(request, *args, **kwargs):
qs = Tweet.objects.all().order_by('-date_posted')
serializer = TweetSerializer(qs, many=True)
return Response(serializer.data)

这里可以看官方的教程例子django rest framework docs

关于python - Django Rest Framework Api 查看 GET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62787025/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com