【发布时间】:2021-06-14 12:23:42
【问题描述】:
django==3.2.4 djangorestframework==3.12.4
blog/serializer.py
from rest_framework import serializers
from .models import Blog
class BlogSerializer(serializers.ModelSerializer):
class Meta:
model = Blog
fields = '__all__'
blog/views.py
from rest_framework import generics
from .models import Blog
from .serializers import BlogSerializer
class BlogListCreateView(generics.ListCreateAPIView):
queryset = Blog.objects.all()
serializer_class = BlogSerializer
class BlogRetrieveUpdateDestroyView(generics.RetrieveUpdateDestroyAPIView):
queryset = Blog.objects.all()
serializer_class = BlogSerializer
博客/urls.py
router = DefaultRouter()
router.register(r'blogs', BlogListCreateView.as_view(), basename="blogs")
router.register(r'action/<int:pk>', BlogRetrieveUpdateDestroyView.as_view(), basename="action")
urlpatterns = [
path('', include(router.urls)),
]
当我使用路由器时,它显示 AttributeError: 'function' object has no attribute 'get_extra_actions' 但是当我使用正常的 django urls 路径时,它运行成功
博客/urls.py
urlpatterns = [
path('blog/', BlogListCreateView.as_view(), name="blog"),
path('blog/<int:pk>', BlogRetrieveUpdateDestroyView.as_view(), name="action"),
]
【问题讨论】:
-
路由器用于viewsets而不是views...
标签: python django django-rest-framework