Jestem nowością w ramach Django REST. Czy ktoś może wyjaśnić, dlaczego mam taki błąd, jeśli zrobię żądania POST do „/ api/index /”405 "Metoda POST nie jest dozwolona" w Django REST framework
405 Method Not Allowed
{"detail":"Method \"POST\" not allowed."}
Mój kod jest następujący:
# 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',
)
}
Ale jeśli dodać <pk>
do mojego wzoru wszystko działa poprawnie:
# 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()),
]
Jestem całkowicie zdezorientowany. Dlaczego konieczne jest korzystanie z <pk>
i czy istnieje sposób na uniknięcie użycia tego parametru we wzorcu adresu URL?
Dziwne. Wysłany przeze mnie kod działa dla mnie. Czy to pełny kod? – ilse2005
Niezupełnie, umieściłem części, które uważam za ważne. Jakiś pomysł, w którym mogę się mylić? – Fomalhaut
Cóż, skopiowałem kod z twojego pytania i działa. Musi być jakiś inny problem. Jakiej wersji DRF używasz? – ilse2005