如何解决我的django api view.py未显示列表并创建新列表
你好,开发人员我是django的初学者,我正在学习一个教程,他在其中创建了具体的视图类并将它们转换为viewset.ModelViewSet类。他在urls.py中使用默认路由器
我的应用程序显示具有视图集的文章列表,但未使用ArticleViewSet(viewset.ModelViewSet)
执行post方法
所以我对使用viewset
感到困惑
这是我的使用具体视图类的api / view.py文件,其中我使用具体视图类**
class ArticleListView(ListAPIView):
queryset = Articles.objects.all()
serializer_class = ArticleSerializer
class ArticleDetailView(RetrieveAPIView):
queryset = Articles.objects.all()
serializer_class = ArticleSerializer
class ArticleUpdateView(UpdateAPIView):
queryset = Articles.objects.all()
serializer_class = ArticleSerializer
class ArticleDeleteView(DestroyAPIView):
queryset = Articles.objects.all()
serializer_class = ArticleSerializer
class ArticleCreateView(CreateAPIView):
permission_classes = []
#parser_classes = (FormParser,MultiPartParser,FileUploadParser )
serializer_class = ArticleSerializer
queryset = Articles.objects.all()
#serializer = ArticleSerializer(queryset,many=True)
def post(self,request):
serializer = ArticleSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(True,status=200)
# class ArticleViewSet(viewsets.ModelViewSet):
# parser_classes = (FormParser,FileUploadParser )
# serializer_class = ArticleSerializer
# queryset = Articles.objects.all()
**这是我在Article应用中的网址格式api / url.py
urlpatterns = [
path('articles',ArticleListView.as_view() name=""),path('xyz',ArticleCreateView.as_view()),path('<pk>',ArticleDetailView.as_view()),path('<pk>/update/',ArticleUpdateView.as_view()),path('<pk>/delete/',ArticleDeleteView.as_view())
]
#from articles.api.views import *
# from rest_framework.routers import DefaultRouter
# router = DefaultRouter()
# router.register(r'',ArticleViewSet,basename='articles')
# urlpatterns = router.urls
**这些是我在设置文件夹**中的urls.py的网址格式
urlpatterns = [
path('api-auth/',include('rest_framework.urls',namespace='rest_framework')),path('rest-auth/',include('rest_auth.urls')),path('rest-auth/registration/',include('rest_auth.registration.urls')),path('admin/',admin.site.urls),path('accounts/',include('allauth.urls')),path('api/',include('articles.api.urls')),]+ static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
解决方法
我不确定,我只进行了快速搜索,但是您提供的信息还不完整,但是我认为您应该定义以下函数,以将功能提供给viewSet
。
"""
Example empty viewset demonstrating the standard
actions that will be handled by a router class.
If you're using format suffixes,make sure to also include
the `format=None` keyword argument for each action.
"""
def list(self,request):
pass
def create(self,request):
pass
def retrieve(self,request,pk=None):
pass
def update(self,pk=None):
pass
def partial_update(self,pk=None):
pass
def destroy(self,pk=None):
pass
或者您可以编写自己的视图集而不是覆盖它们
class UserViewSet(viewsets.ViewSet):
"""
A simple ViewSet for listing or retrieving users.
"""
def list(self,request):
queryset = User.objects.all()
serializer = UserSerializer(queryset,many=True)
return Response(serializer.data)
def retrieve(self,pk=None):
queryset = User.objects.all()
user = get_object_or_404(queryset,pk=pk)
serializer = UserSerializer(user)
return Response(serializer.data)
更准确的细节,您可以查看documentation
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。