Django REST - Не могу получить доступ к моей странице редактирования для моего API - PullRequest
0 голосов
/ 23 декабря 2018

Итак, у меня есть код, который перечисляет все мои сообщения в API, и он делает то, что должен делать.Тем не менее, код для редактирования деталей каждого сообщения не работал.Что я пытаюсь сделать, так это то, что если я получу доступ к URL-адресу сообщения, которое я хочу отредактировать, я смогу это сделать.Но по какой-то причине я не могу.Я думал, что поступаю правильно.

Я пытался получить доступ к сообщениям по их идентификаторам через URL.Но в нем перечислены только все мои сообщения вместо сообщения с соответствующим post_id или первичным ключом.

Мои коды указаны ниже.

views.py

# To retrieve and list all posts
class ListPosts(generics.ListCreateAPIView):
    queryset = Posts.objects.all()
    serializer_class = PostsSerializer

# To view the details of the listed posts
class DetailPosts(generics.RetrieveUpdateDestroyAPIView):
    queryset = Posts.objects.all()
    serializer_class = PostsSerializer

urls.py

from django.conf.urls import url, include
from . import views

urlpatterns = [
    url(r'^', views.ListPosts.as_view(), name="list_posts"),
    url(r'^(?P<post_id>\d+)/$',views.DetailPosts.as_view(), name="detail_posts"),
]

1 Ответ

0 голосов
/ 25 декабря 2018

Для просмотра DetailPosts необходимо указать lookup_field с тем же именем вашего именованного параметра, настроенного в urls.py.Убедитесь, что это поле является полем Posts, которое однозначно определяет его

class DetailPosts(generics.RetrieveUpdateDestroyAPIView):
    lookup_field = 'post_id'
    queryset = Posts.objects.all()
    serializer_class = PostsSerializer

Использовать наборы и маршрутизаторы

Я также обнаруживаю, что ваши представления и URL-адреса могут быть инкапсулированы инструментами django rest framewokкак viewsets и маршрутизаторы , поскольку ваши представления определяют базовую CRUD Posts

views.py

from rest_framework import viewsets

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

routers.py

from rest_framework import routers

from .views import PostsViewSet

router = routers.SimpleRouter()
router.register(r'posts', PostsViewSet)
urlpatterns = router.urls
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...