【问题标题】:Could not resolve URL for hyperlinked relationship using view name "user-detail" (from Rest Framework Quickstart)无法使用视图名称“用户详细信息”解析超链接关系的 URL(来自 Rest Framework 快速入门)
【发布时间】:2022-11-13 08:40:35
【问题描述】:

我正在关注休息框架的教程。我不知道这部分代码在适用于 apigroups 时不起作用。请告诉我根本问题是什么。谢谢你。

错误:

ImproperlyConfigured at /polls/users/
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.

序列化程序:

from django.contrib.auth.models import User, Group
from rest_framework import serializers


class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = ['url', 'username', 'email', 'groups']


class GroupSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Group
        fields = ['url', 'name']

#查看次数

from django.contrib.auth.models import User, Group
from rest_framework import viewsets
from rest_framework import permissions
from .serializers import UserSerializer, GroupSerializer

class UserViewSet(viewsets.ModelViewSet):
    """ API endpoint that allows users to be viewed or edited """
    queryset = User.objects.all().order_by('-date_joined')
    serializer_class = UserSerializer
    permission_classes = [permissions.IsAuthenticated]


class GroupViewSet(viewsets.ModelViewSet):
    """ API endpoint that allows groups to be viewed or edited """
    queryset = Group.objects.all()
    serializer_class = GroupSerializer
    permission_classes = [permissions.IsAuthenticated]

#网址

from django.urls import path, include
from . import views
from rest_framework import routers

# for rest framework
router = routers.DefaultRouter()
router.register(r'users', views.UserViewSet)
router.register(r'groups', views.GroupViewSet)

urlpatterns = [
    path('', include(router.urls)),
    path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]

【问题讨论】:

    标签: django django-rest-framework


    【解决方案1】:

    尝试将basename 添加到您的路由器寄存器中:

    router.register(r'snippets', SnippetViewSet, basename='snippet')
    router.register(r'users', UserViewSet, basename='user')
    

    【讨论】:

    • 还是行不通。我尝试使用 basename='user' 和 basename='users' ...
    • @SuraAmilbahar 它对我也不起作用
    【解决方案2】:

    我的天啊!!这无疑是令人震惊和真实的证词。我于 2022 年 8 月 1 日访问了互联网上的一个论坛,我在论坛上看到了这个强大而伟大的施法者 Ibrahim 博士的奇妙证词。我从不相信它,因为我以前从未听过或学过任何关于魔法的东西。没有人能够影响我的魔法咒语,直到 Ibrahim 博士为我做了这件事并恢复了我 4 年的婚姻并将我的配偶带回了我和我在网上看到的一样的72小时。。当我丈夫跪下来乞求原谅并让我接受他回来时,我真的很惊讶和震惊。我真的很缺乏表达,我不知道多少表达我对你的感激易卜拉欣博士,你是上帝派来的,如果你有任何问题,我的整个家庭都是他的联系人电子邮件:dribrahimspellcaster@gmail.com 或 +2349038450264

    【讨论】:

      猜你喜欢
      • 2013-12-31
      • 2017-02-25
      • 2021-08-16
      • 1970-01-01
      • 2018-06-29
      • 2015-01-15
      • 2019-09-15
      • 2021-07-10
      相关资源
      最近更新 更多