【发布时间】:2021-04-05 19:17:35
【问题描述】:
这是我的views.py 文件。我在 Postman 上尝试过 POST,但没有运气。但是,我可以通过 Django 附带的 API 视图轻松添加。我错过了什么?我现在已经注释掉了权限。我基本上是从 Django Rest Framework 教程中复制的,但它没有提供有关如何发送 POST 请求的详细信息。
class SnippetViewSet(viewsets.ModelViewSet):
"""
This viewset automatically provides `list`, `create`, `retrieve`,
`update` and `destroy` actions.
Additionally we also provide an extra `highlight` action.
"""
queryset = Snippet.objects.all()
serializer_class = SnippetSerializer
# permission_classes = (
# permissions.IsAuthenticatedOrReadOnly,
# IsOwnerOrReadOnly, )
@action(detail=True, renderer_classes=[renderers.StaticHTMLRenderer])
def highlight(self, request, *args, **kwargs):
snippet = self.get_object()
return Response(snippet.highlighted)
def perform_create(self, serializer):
serializer.save(owner=self.request.user)
class UserViewSet(viewsets.ReadOnlyModelViewSet):
"""
This viewset automatically provides `list` and `detail` actions.
"""
queryset = User.objects.all()
serializer_class = UserSerializer
这是我的 urls.py
urlpatterns = [
url(r'^', include('snippets.urls')),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
url(r'^schema/$', schema_view),
url(r'^docs/', include_docs_urls(title=API_TITLE, description=API_DESCRIPTION))
]
这是应用级别的 urls.py
# Create a router and register our viewsets with it.
router = DefaultRouter()
router.register(r'snippets', views.SnippetViewSet)
router.register(r'users', views.UserViewSet)
# The API URLs are now determined automatically by the router.
# Additionally, we include the login URLs for the browsable API.
urlpatterns = [
url(r'^', include(router.urls))
]
【问题讨论】:
-
添加您的 urls.py 并显示您用于发送请求的 URL/端点?
-
如果您尝试使用邮递员发帖,您将收到 403 禁止,因为您需要包含 csrf 令牌
-
在你的类中,定义一个
post方法。我有一个类似的问题,解决了这个问题