当我发短信时,我用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
更多推荐
发布评论