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