Skip to main content
 首页 » 编程设计

python之HyperlinkedModelSerializer 在 django rest 框架中使用 auth.User 抛出 ImproperlyConfigured 错误

2025年05月04日2598°冷暖

我有以下使用 django rest 框架的代码。

网址.py

urlpatterns = [ 
    url(r'^portfolio1/', include('portfolio1.urls')), 
    url(r'^admin/', admin.site.urls), 
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))] 

portfolio1/urls.py

app_name = 'portfolio1' 
urlpatterns = [ 
    url(r'^$', \ 
            views.api_root), 
    url(r'^users/$', \ 
            views.UserList.as_view(), \ 
            name='user-list'), 
    url(r'^users/(?P<pk>[-\d]+)/$', \ 
            views.UserDetail.as_view(), \ 
            name='user-detail'), 
] 
urlpatterns = format_suffix_patterns(urlpatterns) 

portfolio1/serializers.py

from django.contrib.auth.models import User as AuthUser 
class UserSerializer(serializers.HyperlinkedModelSerializer): 
    class Meta: 
        model = AuthUser 
        fields = ('id', 'username', 'url') 

portfolio1/views.py

from django.contrib.auth.models import User as AuthUser 
class UserList(generics.ListAPIView): 
    queryset = AuthUser.objects.all() 
    serializer_class = UserSerializer 
 
class UserDetail(generics.RetrieveAPIView): 
    queryset = AuthUser.objects.all() 
    serializer_class = UserSerializer 
 
@api_view(('GET',)) 
@permission_classes((permissions.AllowAny, )) 
def api_root(request, format=None): 
    return Response({ 
        'users': reverse('user-list', request=request, format=format) 
    }) 

我收到以下错误。

ImproperlyConfigured: Could not resolve URL for hyperlinked relationship using view name "user-detail". You may have failed to include the related model in your API, or incorrectly configured the lookup_field attribute on this field.

我知道错误的含义,但不确定我为什么会收到它。它与 django rest 框架(https://github.com/tomchristie/django-rest-framework/issues/2711)的版本控制有什么关系吗?我已确保我没有犯与 HyperlinkedIdentityField returning error only on User model 相同的错误.

请您参考如下方法:

在 portfolio1/urls.py 中删除 app_name = 'portfolio1'。