Sono nuovo nel framework Rango di Django. Qualcuno può spiegare perché ottengo tale errore, se faccio una richiesta POST a '/ api/index /'405 "Metodo POST non consentito" nel framework Django REST
405 Method Not Allowed
{"detail":"Method \"POST\" not allowed."}
Il mio codice è il seguente:
# 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',
)
}
Ma se aggiungo <pk>
nel mio modello , tutto funziona bene:
# 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()),
]
Sono completamente confuso. Perché è necessario utilizzare <pk>
e c'è un modo per evitare l'uso di questo parametro nel pattern URL?
Strano. Il codice che hai postato funziona per me. È questo il codice completo? – ilse2005
Non esattamente, ho posizionato le parti che ritengo importanti. Qualche idea, dove posso sbagliare? – Fomalhaut
Bene, ho copiato il codice dalla tua domanda e funziona. Ci deve essere qualche altro problema. Quale versione DRF stai usando? – ilse2005