PUT-запрос не отображается в разрешенных запросах с использованием ModelViewSet - PullRequest
0 голосов
/ 31 января 2019

Я не могу сделать запрос на поставку, используя ModelViewSet, как в документации.Мои взгляды, сериализаторы, как показано ниже

class PostsViewSet(viewsets.ModelViewSet):
    queryset = PostsModel.objects.all()
    serializer_class = PostsSerializer

class PostsSerializer(serializers.ModelSerializer):
    class Meta:
        model=PostsModel
        fields=('id','title', 'author', 'body')

Метод PUT есть в разрешенных методах, как вы можете видеть на картинке.enter image description here

А это мой posts.urls.py, т. Е. Мое приложение

router = DefaultRouter()
router.register('', PostsViewSet)


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

, а это мой корневой urls.py

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/posts', include('posts.urls')),
]

и в ответе за

http://localhost:8000/api/posts/1/

Response

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Нет необходимости использовать косую черту после идентификатора

изменить:

http://localhost:8000/api/posts/1/

на:

http://localhost:8000/api/posts/1

ИЛИ изменить шаблон URL на:

path('api/posts/', include('posts.urls')),

и получить доступ к API, используя следующий URL:

http://localhost:8000/api/posts/1/
0 голосов
/ 31 января 2019

Я думаю, что проблема здесь:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/posts', include('posts.urls')),  # <-- Here
]

Это должно быть:

path('api/posts/', include('posts.urls')),   # need to append slash after posts

Здесь нет ничего плохого в запросе PUT, проблема в самой маршрутизации,Когда вы нажимаете /posts/1, он не найден django (потому что конфигурация была неправильной).

...