2016-07-09 4 views
0

Ich benutze httpie meine api zu testen, wenn ich Textdjango ruhen das gleiche in verschiedener URL zurückkehren

localhost:8000/users/ 

es die Benutzerliste zeigen, i

localhost:8000/users/jack/ 

es noch zeigt den Benutzer dann Text Liste, nicht das Benutzerdetail, ist es etwas falsch mit meinem 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) 

Antwort

1

Problem in Ihrem Urls, müssen Sie r'users/$ schließen, weil Django nicht weiter gehen kann users/ ohne $
Und warum Sie Verwenden Sie ListAPIView zum Abrufen einzelner Objekte?
Sie benötigen RetrieveAPIView oder RetrieveUpdateAPIView, wenn Sie die Daten ändern möchten. Und Ihre Ansicht zu ändern, wie so:

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

Sie brauchen nicht get_queryset bei allen

About mixins

+0

bekam es, aber der Fehler noch vorhanden, hat mein views.py ein anderes Problem hat? –

+0

Sie meinen, dass Django einige Fehler auslösen? Wenn es, kannst du es in Frage stellen. Auch ich aktualisiere meine Antwort, versuche es noch einmal –

+0

nicht Fehler tatsächlich, ich kann einfach nicht die Benutzerdetails, und ich habe versucht, Ihren Code, immer noch die gleichen –

Verwandte Themen