【发布时间】:2015-11-15 13:47:44
【问题描述】:
我正在使用从 ModelViewSet 派生的基本 UserViewSet。
通过api/users/<pk> 检索具有主键的用户可以正常工作。
但我也希望能够按用户名检索用户。
我添加了一个新的详细路由,但是当我尝试使用 URL /api/users/retrieve_by_username/altoyr 获取用户时,我总是在我的服务器上得到 404。
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
@detail_route(methods=['get'])
def retrieve_by_username(self, request, username=None):
try:
user = User.objects.get(userName=username)
return Response(user)
except User.DoesNotExist:
return Response("No user with username found!", status=status.HTTP_400_BAD_REQUEST)
网址是通过路由器注册的:
router = DefaultRouter()
router.register(r'users', views.UserViewSet)
# The API URLs are now determined automatically by the router.
# Additionally, we include the login URLs for the browsable API.
urlpatterns = [
url(r'^', include(router.urls)),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]
我认为我缺少构建休息网址的重要部分。
【问题讨论】:
-
使用像django-rest-framework.org/api-guide/filtering/…这样的查询参数过滤列表结果,但我想得到一个用户或错误
标签: python django-rest-framework