4๐
Make sure that you have โPOSTโ in http_method_names
. Alternatively, you can write it like this:
def allowed_methods(self):
"""
Return the list of allowed HTTP methods, uppercased.
"""
self.http_method_names.append("post")
return [method.upper() for method in self.http_method_names
if hasattr(self, method)]
2๐
class ApiIndexView(APIView)
instead of this please
import from rest_framework import generics
and change it to
class ApiIndexView(generics.ListCreateAPIView)
There are many generic views. ListCreateAPIView
is used for GET and POST and CreateAPIView
is used only for POST methods
- [Django]-Cannot set Django to work with smtp.gmail.com
- [Django]-Django get objects not referenced by foreign key
- [Django]-Django annotation with nested filter
2๐
Is allways better not using empty spaces in url names.
So, instead of this:
router.register(r'', views.SomeViewSet, basename='index')
Do this:
router.register(r'some-url-name', views.SomeViewSet, basename='index')
- [Django]-Filtering dropdown values in django admin
- [Django]-Django 2 โ How to register a user using email confirmation and CBVs?
- [Django]-Homepage login form Django
1๐
You need to change just:
# views.py
class ApiIndexView(UpdateView):
permission_classes = (permissions.AllowAny,)
def post(self, request, format=None):
return Response("ok")
- [Django]-How can I get MINIO access and secret key?
- [Django]-Sending HTML email in django
- [Django]-How to pass django rest framework response to html?
1๐
Your own comment is right. You just included the index url before. And that main view recieve url parameter for retreiving objects, so your new view is interpreted as param.
I had the same problem in urls.py:
router = DefaultRouter()
router.register(r'', views.MainViewSet, basename='index')
router.register(r'other_view', views.OtherViewSet, basename='typeservice')
Solution:
router = DefaultRouter()
router.register(r'main', views.MainViewSet, basename='index')
router.register(r'other_view', views.OtherViewSet, basename='other_view')
- [Django]-Python Django Gmail SMTP setup
- [Django]-UUID as default value in Django model
- [Django]-Django models avoid duplicates
0๐
Had the exact issue too, solved it like this.
My previous code
urlpatterns = [
path('', views.CurriculumList.as_view(), name='list-curriculum'),
path(
'<slug:slug>/', views.SingleCurriculum.as_view(),
name='get-curriculum'),
path(
'enroll/', views.EnrollCurriculum.as_view(),
name='enroll-curriculum'),
]
The problem here was that when i visit url enroll/
django maps the request to the first match, which is <slug:slug>/
. All i had to do was change the order, so that the actual Enroll views takes precedence.
New code
urlpatterns = [
path('', views.CurriculumList.as_view(), name='list-curriculum'),
path(
'enroll/', views.EnrollCurriculum.as_view(),
name='enroll-curriculum'),
path(
'<slug:slug>/', views.SingleCurriculum.as_view(),
name='get-curriculum'),
]
- [Django]-How to merge consecutive database migrations in django 1.9+?
- [Django]-Allowing RabbitMQ-Server Connections
- [Django]-With DEBUG=False, how can I log django exceptions to a log file