如何解决带有超链接模型序列化器的可浏览器api中不会显示路由器的基本URL
首先输入一些代码: serializers.py
class PostSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Post
fields = '__all__'
class CommentSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Comment
fields = '__all__'
在 viewsets.py 中,我仅对所有对象使用模型视图集和查询集。 现在,在我的 api.urls 中,路由器的注册方式如下:
router = routers.DefaultRouter()
router.register('posts',PostViewSet)
router.register('comments',CommentViewSet)
# this is what i want
urlpatterns = [
re_path(r'api/',include(router.urls),]
urlpatterns += router.urls
如您所见,路由器的基本URL是 api / 。 当我转到localhost:8000 / api / comments /时,我得到正确的输出。 但是然后在评论列表中,对于特定评论,我得到了
{
"url": "localhost:8000/comments/1/","post": "localhost:8000/posts/1/"
}
请注意缺少基本网址(api /)。 相反,我期望
{
"url": "localhost:8000/api/comments/1/","post": "localhost:8000/api/posts/1/"
}
此外,如果我进入 localhost:8000 / api / commnets / 1 / 或 localhost:8000 / comments / 1 / ,我将得到正确的个人评论
我的问题归结为为什么可浏览的api的url中缺少api /,以及如何解决该问题。
解决方法
在我的应用的urls.py中,
我将path('',include('app_name.api.urls'))更改为path('api /',include('app_name.api.urls'))
然后在api.urls中,将re_path(r'api /',include(router.urls))更改为路径('',include(router.urls))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。