所以我对User有两个不同的API视图,一个是超级用户可以使用的,另一个是普通用户可以使用的。
目前,问题是我的超链接默认情况下是auth_users视图,而不是用户视图。
即
'url': 'localhost:8000/auth_users/5/'
而不是
'url': 'localhost:8000/users/5/'
以下是相关文件的摘录......
*网址*
router =
routers.SimpleRouter()
router.register(r'auth_users', UserAPI.AdminUserViewSet)
urlpatterns = patterns('',
url(r'^', include(router.urls)),
url(r'^users/?$', UserAPI.CreateOrList.as_view(), name='users'),
url(r'^users/(?P<pk>[0-9]+)/?$', UserAPI.RetrieveUpdateOrDestroy.as_view()),
...
)
*序列化* *
class basic_user_serializer(serializers.HyperlinkedModelSerializer):
url = HyperlinkedIdentityField(view_name='users')
class Meta:
model = User
fields = ['url', 'email', 'username']
*观看*
class CreateOrList(generics.GenericAPIView):
"""
List all users, or create a new one.
"""
serializer_class = create_user_serializer
class RetrieveUpdateOrDestroy(generics.RetrieveUpdateDestroyAPIView):
queryset = User.objects.all()
serializer_class = create_user_serializer
我看过文档(下面链接),但不确定是否解释了这个... http://django-rest-framework.org/api-guide/relations.html#hyperlinkedidentityfield
任何人都知道如何修复它?
干杯。
答案 0 :(得分:1)
哦,我修好了。
我摆脱了auth_user视图以查看会发生什么,并且它抛出了一个错误页面,说它无法找到“用户详细信息”。
然后我将用户视图的名称更改为“user-detail”,重新启用了auth_user视图,现在它可以正常工作。
不知道为什么 - 我不是告诉它使用'用户'而不是'用户细节'??