【问题标题】:DJANGO Rest API - Method POST Not AllowedDJANGO Rest API - 方法 POST 不允许
【发布时间】: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 方法。我有一个类似的问题,解决了这个问题

标签: python django api


【解决方案1】:

最好是在另一个集合中添加对文档的引用,例如

Ref(Collection("collectionName", targetDocumentID))

我仍在研究是否可以在那里存在实际文档而不是文档参考。

【讨论】:

    猜你喜欢
    • 2021-09-07
    • 2019-02-12
    • 2021-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-22
    • 2020-11-25
    相关资源
    最近更新 更多