Tôi mới trong khung công tác REST của Django. Ai đó có thể giải thích lý do tại sao tôi nhận được lỗi như vậy, nếu tôi thực hiện một yêu cầu POST để '/ api/index /'405 "Không cho phép phương thức POST" trong khung công tác REST của Django
405 Method Not Allowed
{"detail":"Method \"POST\" not allowed."}
Mã của tôi là như sau:
# views.py
class ApiIndexView(APIView):
permission_classes = (permissions.AllowAny,)
def post(self, request, format=None):
return Response("ok")
# urls.py
urlpatterns = [
url(r'^api/index/$', views.ApiIndexView.as_view()),
]
# settings.py
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.DjangoModelPermissions',
),
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.TokenAuthentication',
)
}
Nhưng nếu tôi thêm <pk>
vào mô hình của tôi , mọi thứ đều hoạt động tốt:
# views.py
class ApiIndexView(APIView):
permission_classes = (permissions.AllowAny,)
def post(self, request, pk, format=None):
return Response("ok")
# urls.py
urlpatterns = [
url(r'^api/index/(?P<pk>\d+)/$', views.ApiIndexView.as_view()),
]
Tôi hoàn toàn bối rối. Tại sao cần sử dụng <pk>
và có cách nào để tránh sử dụng tham số này trong mẫu URL không?
Lạ. Mã bạn đăng đang hoạt động cho tôi. Đây có phải là mã đầy đủ không? – ilse2005
Không chính xác, tôi đặt các bộ phận mà tôi thấy quan trọng. Bất kỳ ý tưởng, nơi tôi có thể sai? – Fomalhaut
Tôi đã sao chép mã từ câu hỏi của bạn và nó hoạt động. Phải có một số vấn đề khác. Bạn đang sử dụng phiên bản DRF nào? – ilse2005