2016-07-09 32 views
0

我用httpie来测试我的API返回相同的,当我的文字Django的休息在不同的URL

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) 

回答

1

问题在你的网址,你需要关闭r'users/$,因为Django的不能去进一步users/没有$
,为什么你使用ListAPIView来检索单个对象?
如果要更改数据,则需要RetrieveAPIViewRetrieveUpdateAPIView。改变你的看法,像这样:

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

你根本就不

About mixins

+0

需要get_queryset得到它,但错误依然存在,做我的views.py有另一个问题? –

+0

你的意思是Django提出一些错误?如果它,你能否置疑。另外我更新我的答案,再试一次 –

+0

其实并不是错误,我只是无法得到用户的详细信息,而我试过你的代码,仍然一样 –