django rest框架在超链接字段的两个可能视图之间进行选择

时间:2013-06-11 07:29:44

标签: django-rest-framework

所以我对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

任何人都知道如何修复它?

干杯。

1 个答案:

答案 0 :(得分:1)

哦,我修好了。

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

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

不知道为什么 - 我不是告诉它使用'用户'而不是'用户细节'??