Django REST-无法访问我的API的编辑页面

时间:2018-12-23 05:03:47

标签: python django django-rest-framework

因此,我有一个代码列出了我在API中的所有帖子,并且它正在执行应做的事情。但是,用于编辑每个帖子的详细信息的代码无法正常工作。我想做的是,如果我访问要编辑的帖子的URL,则应该可以。但是由于某种原因我不能。我以为我做对了。

我试图通过URL通过其ID访问帖子。但它只列出我的所有帖子,而不列出具有匹配的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 :(得分:2)

要进行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工具(例如viewsetsrouters)封装,因为您的视图定义了Posts的基本CRUD。

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