【发布时间】:2019-01-31 04:51:26
【问题描述】:
我无法像文档中那样使用 ModelViewSet 发出 put 请求。 我的观点,序列化器如下
class PostsViewSet(viewsets.ModelViewSet):
queryset = PostsModel.objects.all()
serializer_class = PostsSerializer
class PostsSerializer(serializers.ModelSerializer):
class Meta:
model=PostsModel
fields=('id','title', 'author', 'body')
这是我的 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/
【问题讨论】:
-
当然
PUT在这里是不允许的。PUT用于更新实例,因此需要创建帖子实例。然后在该网址api/posts/<post_id>上,您可以使用PUT、PATCH和DELETE。填写表格和POST以创建新帖子 -
我创建了帖子,无法更新..
-
不,这是一个学习项目,所以我没有创建任何权限类,所有 API 都是开放的
-
是的,我试过 /api/posts/1,它说在 URL 模式中没有匹配的 url
-
您可以在序列化程序中将
'url'添加到您的字段中。然后你会得到每个帖子的网址作为回应。你可以点击它。
标签: django django-rest-framework django-views put http-method