django rest在不同的url中返回相同的内容(django rest return the same in different url)

编程入门 行业动态 更新时间:2024-10-21 09:53:49
django rest在不同的url中返回相同的内容(django rest return the same in different url)

当我发短信时,我用httpie来测试我的api

localhost:8000/users/

它显示用户列表,然后我发短信

localhost:8000/users/jack/

它仍然显示用户列表,而不是用户详细信息,我的代码有问题吗?

url.py

urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^', include('rest_framework.urls',namespace='rest_framework')), url(r'regist/', Regist.as_view()), url(r'users/', UserList.as_view()), url(r'users/(?P<username>[a-zA-Z0-9]+)/$', UserDetail.as_view()), ]

views.py

class UserDetail(generics.ListAPIView): serializer_class= UserSeriallizer def get_queryset(self): username = self.kwargs['username'] user=User.objects.filter(username=username) return user class UserList(APIView): def get(self, request): users = User.objects.all() serializer = UserSeriallizer(users, many=True) return Response(serializer.data)

I use httpie to test my api,when I text

localhost:8000/users/

it show the user list,then i text

localhost:8000/users/jack/

it still show the user list,not the user detail,it's something wrong with my code?

url.py

urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^', include('rest_framework.urls',namespace='rest_framework')), url(r'regist/', Regist.as_view()), url(r'users/', UserList.as_view()), url(r'users/(?P<username>[a-zA-Z0-9]+)/$', UserDetail.as_view()), ]

views.py

class UserDetail(generics.ListAPIView): serializer_class= UserSeriallizer def get_queryset(self): username = self.kwargs['username'] user=User.objects.filter(username=username) return user class UserList(APIView): def get(self, request): users = User.objects.all() serializer = UserSeriallizer(users, many=True) return Response(serializer.data)

最满意答案

在您的网址中出现问题,您需要关闭r'users/$ ,因为Django无法进一步users/没有$ 为什么使用ListAPIView来检索单个对象? 如果要更改数据,则需要RetrieveAPIView或RetrieveUpdateAPIView 。 并改变你的观点:

class UserDetail(RetrieveAPIView): lookup_field = 'username' queryset = User.objects.all()

你根本不需要get_queryset

关于mixins

Problem in your urls, you need to close r'users/$, because Django can't go further users/ without $ And why you use ListAPIView for retrieving single object? You need RetrieveAPIView or RetrieveUpdateAPIView if you want change the data. And change your view like so:

class UserDetail(RetrieveAPIView): lookup_field = 'username' queryset = User.objects.all()

You don't need get_queryset at all

About mixins

更多推荐

本文发布于:2023-08-07 08:01:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1462338.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:内容   rest   django   return   url

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!