python - 我的 django api view.py 没有显示列表并创建新列表
问题描述
开发人员您好,我是 django 的初学者,我正在遵循一个教程,在该教程中他创建了具体的视图类并将它们转换为 viewset.ModelViewSet 类。他在 urls.py 中使用默认路由器
我的应用程序显示带有视图集的文章列表,但不执行 post 方法,ArticleViewSet(viewset.ModelViewSet)
所以我对它使用感到困惑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,MultiPartParser, FileUploadParser )
# serializer_class = ArticleSerializer
# queryset = Articles.objects.all()
**这是我在文章应用程序中的网址模式 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 的 url 模式 **
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, request, pk=None):
pass
def partial_update(self, request, pk=None):
pass
def destroy(self, request, 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, request, pk=None):
queryset = User.objects.all()
user = get_object_or_404(queryset, pk=pk)
serializer = UserSerializer(user)
return Response(serializer.data)
从更准确的细节,你可以看到文档
推荐阅读
- sql - 查询以显示值的名称而不是一个表中的 ID
- c - linux kernel 4.12中wake_up_interruptible()的正确用法是什么?
- c - 如何使用 getchar 监控用户输入
- build - 如何启用 DRAFT API for zeromq/cppzmq 以使用 vcpkg 在 Windows 上构建?
- core-data - 将已删除的 CKRecord 与 CoreData NSManagedObject 协调一致
- matlab - 如何避免用于矩阵所有排列相乘的for循环?
- flutter - 如何在颤动中为 ClipOval 添加阴影?
- python - 使用 Python Beautiful Soup 是否可以搜索 html id 的前几个字符?
- reactjs - 组件状态改变后如何重新渲染 DOM?
- python - Python 服务器没有回复客户端发送的消息的答案