ListCreateAPIView Django rest framework Метод «POST» не разрешен

#django-rest-framework

#django-rest-framework

Вопрос:

Смотрите, я не знаю, что это на самом деле очень странная ошибка, которую я получаю.

Внутри приложения компании

views.py

 class CompanyView(generics.ListCreateAPIView):
    queryset = CompanyProfile.objects.all()
    serializer_class = RegisterationCompanySerializer
    permission_classes = (permissions.IsAuthenticated,)

    def post(self, request, *args, **kwargs):
        import pdb; pdb.set_trace() #check weather post request is getting called?
        return self.create(request, *args, **kwargs)

    def get_serializer(self, *args, **kwargs):
        import pdb; pdb.set_trace() #check weather post serializer is getting called?
        user_id = self.request.user.id
        serializer_class = self.get_serializer_class()
        .....
        kwargs['data'] = draft_request_data
        return serializer_class(*args, **kwargs)

  

urls.py внутри приложения компании

 urlpatterns = [
    path('', include(router.urls)),

    ## Register Company Process
    # path('List/', ListCompanyView.as_view()),
    path('Reg/', CompanyView.as_view()),
]

  

serializer.py

 class RegisterationCompanySerializer(serializers.ModelSerializer):

    class Meta:
        model = CompanyProfile
        fields = '__all__'
        extra_kwargs = {
                        'short_name': {'required': True},
                        ......
                        'user' : {'required': True},
                       }

  

models.py

 class CompanyProfile(models.Model):
    id                  = models.UUIDField(default=uuid.uuid4, 
                                            editable=False, 
                                            primary_key=True,
                                            verbose_name='ID',)
   ......
   verified             = models.BooleanField(default=False)

    def __str__(self):
        return str(self.id)
  

Кроме того, обратите company внимание, что присутствует в INSTALLED_APPS

Но ошибка, которую я получаю, связана с postman

 {
    "detail": "Method "POST" not allowed."
}
  

на терминале и попробовал PDB, чтобы проверить, вызывается ли функция

 Method Not Allowed: /company/Reg/
[Date and Time] "POST /company/Reg/ HTTP/1.1" 405 41
  

дайте мне знать, если вы ищете более подробную информацию.

Заранее спасибо

С уважением

Комментарии:

1. добавьте настройки маршрутизатора DRF.

2. О, чувак, ты прав, это проблема, которую я только что прокомментировал, что маршрутизатор сейчас работает.

Ответ №1:

С помощью @ArakkalAbu я смог выяснить ошибку, вот как я обновил маршрутизатор

 urlpatterns = [
    path('check/', include(router.urls)),
# 
    ## Register Company Process
    # path('List/', ListCompanyView.as_view()),
    path('Reg/', CompanyView.as_view()),
]

  

Теперь это работает нормально, спасибо

Ответ №2:

В вашем urls.py файл убедитесь, что ваш путь заканчивается на / например, path(‘post/’, Post.as_views()), а также в вашем http-запросе укажите это ‘/’ в конце. Вот как я решил проблему.