【问题标题】:Could not resolve URL for hyperlinked relationship using view name "usermodel-detail"无法使用视图名称“usermodel-detail”解析超链接关系的 URL
【发布时间】:2020-07-22 15:53:41
【问题描述】:

您好,我正在尝试超链接我的 API,但似乎无法使其正常工作。这是我的 serializers.py:

from rest_framework import serializers
from api.models import *


class UserSerializer(serializers.HyperlinkedModelSerializer):

    class Meta:
        model = UserModel
        fields = '__all__'

        depth = 1


class BlogSerializer(serializers.HyperlinkedModelSerializer):

    posts = serializers.HyperlinkedRelatedField(
        many=True, view_name='blogs-detail', read_only=True)

    class Meta:
        model = BlogModel
        fields = ['url', 'id', 'title', 'body', 'posts']

这是我的观点.py

class UserViewset(viewsets.ModelViewSet):

    queryset = UserModel.objects.all()
    serializer_class = UserSerializer

             
class BlogViewset(viewsets.ModelViewSet):

    queryset = BlogModel.objects.all()
    serializer_class = BlogSerializer

这是我的 urls.py:

from django.urls import path, include
from api.views import *

from rest_framework import routers

router = routers.DefaultRouter()
router.register('users', UserViewset, basename='users')
router.register('blogs', BlogViewset, basename='blogs')

urlpatterns = [
    path('', include(router.urls)),
    path('post/<int:pk>/', PostView, name='post'),
    #path('update-post/<str:pk>/', updatePost, name='post'),
]

我尝试按照 django rest 教程进行操作,但我似乎仍然无法让它工作。我只是盯着学习其余的框架。提前感谢您的反馈!

【问题讨论】:

  • 请包括完整的错误和堆栈跟踪。它包含有助于调试的信息。
  • 我应该把它包含在标题中吗?

标签: python django django-rest-framework


【解决方案1】:

从 router.register 中删除 basename
django 找不到为此生成的默认详细视图。
https://www.django-rest-framework.org/apiguide/serializers/#hyperlinkedmodelserializer

【讨论】:

    猜你喜欢
    • 2021-01-25
    • 2018-11-22
    • 2015-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-15
    相关资源
    最近更新 更多