/posts/ 'PostList' 处的 AssertionError 应该包含一个 `queryset` 属性,或者覆盖 `get_queryset()` 方法

jyu*_*yur 9 python django django-views

url== http://127.0.0.1:8000/posts/
D:\Priyanka_Angular1\virtual_env\django-angular\lib\site-packages\rest_framework\views.py 中的错误在调度中

            response = self.handle_exception(exc)

 ...
Run Code Online (Sandbox Code Playgroud)

? 本地变量 D:\Priyanka_Angular1\virtual_env\django-angular\lib\site-packages\rest_framework\views.py in handle_exception

            self.raise_uncaught_exception(exc)

 ...
Run Code Online (Sandbox Code Playgroud)

? 调度中的本地变量 D:\Priyanka_Angular1\virtual_env\django-angular\lib\site-packages\rest_framework\views.py

            response = handler(request, *args, **kwargs)

 ...
Run Code Online (Sandbox Code Playgroud)

? 本地变量 D:\Priyanka_Angular1\virtual_env\django-angular\lib\site-packages\rest_framework\generics.py 在 get

        return self.list(request, *args, **kwargs)

 ...
Run Code Online (Sandbox Code Playgroud)

? 本地变量 D:\Priyanka_Angular1\virtual_env\django-angular\lib\site-packages\rest_framework\mixins.py 在列表中

        queryset = self.filter_queryset(self.get_queryset())

 ...
Run Code Online (Sandbox Code Playgroud)

? get_queryset 中的本地变量 D:\Priyanka_Angular1\virtual_env\django-angular\lib\site-packages\rest_framework\generics.py

            % self.__class__.__name__
Run Code Online (Sandbox Code Playgroud)

序列化程序.py

from rest_framework import serializers
from posts.models import Post

class PostSerializer(serializers.HyperlinkedModelSerializer):
    author = serializers.Field(source='author.username')
    api_url = serializers.SerializerMethodField('get_api_url')

    class Meta:
        model = Post
        fields = ('id', 'title', 'description', 'created_on', 'author', 'url', 'api_url')
        read_only_fields = ('id', 'created_on')

    def get_api_url(self, obj):
         return "#/post/%s" % obj.id
Run Code Online (Sandbox Code Playgroud)

视图.py

from django.shortcuts import render
from rest_framework import generics
from posts.models import Post
from posts.serializers import PostSerializer

class PostList(generics.ListCreateAPIView):
  """
   List all boards, or create a new board.
  """
  model = Post
  serializer_class = PostSerializer


class PostDetail(generics.RetrieveUpdateDestroyAPIView):
  """
   Retrieve, update or delete a board instance.
  """
  model = Post
  serializer_class = PostSerializer
Run Code Online (Sandbox Code Playgroud)

luc*_*tti 9

您需要包含queryset = Post.objects.all()在您的PostList视图中,以及包含在PostDetail.

每个视图都需要定义一个查询集以了解要查找的对象。您可以使用queryset属性(如我建议的那样)或从get_queryset方法返回有效的查询集来定义视图的查询集。

顺便说一下,您可以删除model视图中的属性,因为它们没有被使用。这不是告诉视图要查找哪些对象的正确方法。