1

所以我对 User 有两种不同的 API 视图,一种是超级用户可以使用的,一种是普通用户可以使用的。

目前,问题是我的超链接默认会转到 auth_users 视图,而不是用户视图。

IE

'url': 'localhost:8000/auth_users/5/'

代替

'url': 'localhost:8000/users/5/'

以下是相关文件的摘录...

* 网址 *

路由器 =

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

谁知道怎么修它?

干杯。

4

1 回答 1

1

哦,我修好了。

我摆脱了 auth_user 视图来看看会发生什么,它抛出了一个错误页面,说它找不到“用户详细信息”。

然后我将用户视图的名称更改为“用户详细信息”,重新启用了 auth_user 视图,它现在可以正常工作了。

但是不知道为什么-我没有告诉它使用“用户”而不是“用户详细信息”吗?

于 2013-06-11T07:33:17.397 回答