2015-09-12 21 views
1

看到很多关于类似问题的帖子,要么不是很明确,要么我无法理解,所以请在这里再次发布我的问题。无法解析超链接关系的URL

我有很多其他的“xxxList”和“xxxDetail”,所有的工作很好,除了这总是异常:

无法使用视图名称 “用户信息细节”超链接关系解析URL。您可能未能在您的API中包含相关型号 ,或在 此字段上错误地配置了lookup_field属性。

型号

class UserInfo(models.Model): 
    # extend Django user object 
    user = models.ForeignKey(User, related_name='parkingUser') 

串行:

class UserInfoSerializer(serializers.HyperlinkedModelSerializer): 
    class Meta: 
     model = UserInfo 

class UserSerializer(serializers.HyperlinkedModelSerializer): 
    class Meta: 
     model = User 
     fields = ('url', 'username', 'is_staff', 'is_active', 'date_joined') 

查看:

class UserInfoList(generics.ListCreateAPIView): 
    queryset = UserInfo.objects.all() 
    serializer_class = UserInfoSerializer 
    permission_classes = (permissions.IsAuthenticated,) 

    def perform_create(self, serializer): 
     serializer.save(user=self.request.user) 

class UserInfoDetail(generics.RetrieveAPIView): 
    queryset = UserInfo.objects.all() 
    serializer_class = UserInfoSerializer 
    permission_classes = (permissions.IsAuthenticated,)  

class UserList(generics.ListCreateAPIView): 
    queryset = User.objects.all() 
    serializer_class = UserSerializer 
    permission_classes = (permissions.IsAuthenticated,) 

class UserDetail(generics.RetrieveAPIView): 
    queryset = User.objects.all() 
    serializer_class = UserSerializer 
    permission_classes = (permissions.IsAuthenticated, IsSuperUsersGroupOrDeny) 

App网址:

url(r'^usersInfo/$', views.UserInfoList.as_view(), name='userInfo-list'), 
url(r'^usersInfo/(?P<pk>[0-9]+)/$', views.UserInfoDetail.as_view(), name='userInfo-detail'), 
url(r'^users/$', views.UserList.as_view(), name='user-list'), 
url(r'^users/(?P<pk>[0-9]+)/$', views.UserDetail.as_view(), name='user-detail'), 

我几乎取消了所有的测试逻辑代码,它不能再简单了,还是一样的异常,奇怪的是,如果我测试了“userInfoDetail”在标准网址浏览器,如:

http://rest.myDomain.xxx:8090/usersInfo/replaceWithIntegerNumber/

他们中的一些返回相同的错误,他们中的一些返回

{ “detail”:“Not found。” }

这里有什么问题?

回答

2

我可能是错的,但问题似乎是您的usersInfo URL中的首字母“I”。尝试name='userinfo-list'name='userinfo-detail'而不是name='userInfo-list'name='userInfo-detail'

+0

不能相信这是事业的原因,这种问题总是花费我几个小时才能弄清楚,谢谢! – Shawn