- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
以前我用的是 ModelSerializer
并且没有错误。当我用 HyperlinkedModelSerializer
替换它时这个错误被抛出
Could not resolve URL for hyperlinked relationship using view name "book
detail". You may have failed to include the related model in your API,
or incorrectly configured the `lookup_field` attribute on this field.
这是
serializers.py
文件:
class BookSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Book
fields = ['id', 'url', 'title', 'subtitle', 'isbn']
model.py
class Book(models.Model):
title = models.CharField(max_length=250)
subtitle = models.CharField(max_length=250)
author = models.CharField(max_length=100)
isbn = models.CharField(max_length=13)
def __str__(self):
return self.title
views.py
class BookListView(viewsets.ModelViewSet):
queryset = Book.objects.all()
serializer_class = BookSerializer
和
urls.py
router = routers.DefaultRouter()
router.register('books', BookListView)
app_name = "books"
urlpatterns = [
path('', include(router.urls)),
]
View 名称
book-detail
在我的 View 中不存在,可能是 Django 自动创建的,我不知道在哪里可以找到和调试它?谢谢你。
Environment:
Request Method: GET
Request URL: http://localhost:8000/books/
Django Version: 3.1.2
Python Version: 3.8.5
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'books.apps.BooksConfig']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback (most recent call last):
File "D:\All\Back-end Django\REST API Django\lib\site-packages\rest_framework\relations.py", line 398, in to_representation
url = self.get_url(value, self.view_name, request, format)
File "D:\All\Back-end Django\REST API Django\lib\site-packages\rest_framework\relations.py", line 336, in get_url
return self.reverse(view_name, kwargs=kwargs, request=request, format=format)
File "D:\All\Back-end Django\REST API Django\lib\site-packages\rest_framework\reverse.py", line 47, in reverse
url = _reverse(viewname, args, kwargs, request, format, **extra)
File "D:\All\Back-end Django\REST API Django\lib\site-packages\rest_framework\reverse.py", line 60, in _reverse
url = django_reverse(viewname, args=args, kwargs=kwargs, **extra)
File "D:\All\Back-end Django\REST API Django\lib\site-packages\django\urls\base.py", line 87, in reverse
return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))
File "D:\All\Back-end Django\REST API Django\lib\site-packages\django\urls\resolvers.py", line 685, in _reverse_with_prefix
raise NoReverseMatch(msg)
During handling of the above exception (Reverse for 'book-detail' not found. 'book-detail' is not a valid view function or pattern name.), another exception occurred:
File "D:\All\Back-end Django\REST API Django\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
response = get_response(request)
File "D:\All\Back-end Django\REST API Django\lib\site-packages\django\core\handlers\base.py", line 179, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "D:\All\Back-end Django\REST API Django\lib\site-packages\django\views\decorators\csrf.py", line 54, in wrapped_view
return view_func(*args, **kwargs)
File "D:\All\Back-end Django\REST API Django\lib\site-packages\rest_framework\viewsets.py", line 125, in view
return self.dispatch(request, *args, **kwargs)
File "D:\All\Back-end Django\REST API Django\lib\site-packages\rest_framework\views.py", line 509, in dispatch
response = self.handle_exception(exc)
File "D:\All\Back-end Django\REST API Django\lib\site-packages\rest_framework\views.py", line 469, in handle_exception
self.raise_uncaught_exception(exc)
File "D:\All\Back-end Django\REST API Django\lib\site-packages\rest_framework\views.py", line 480, in raise_uncaught_exception
raise exc
File "D:\All\Back-end Django\REST API Django\lib\site-packages\rest_framework\views.py", line 506, in dispatch
response = handler(request, *args, **kwargs)
File "D:\All\Back-end Django\REST API Django\lib\site-packages\rest_framework\mixins.py", line 46, in list
return Response(serializer.data)
File "D:\All\Back-end Django\REST API Django\lib\site-packages\rest_framework\serializers.py", line 745, in data
ret = super().data
File "D:\All\Back-end Django\REST API Django\lib\site-packages\rest_framework\serializers.py", line 246, in data
self._data = self.to_representation(self.instance)
File "D:\All\Back-end Django\REST API Django\lib\site-packages\rest_framework\serializers.py", line 663, in to_representation
return [
File "D:\All\Back-end Django\REST API Django\lib\site-packages\rest_framework\serializers.py", line 664, in <listcomp>
self.child.to_representation(item) for item in iterable
File "D:\All\Back-end Django\REST API Django\lib\site-packages\rest_framework\serializers.py", line 515, in to_representation
ret[field.field_name] = field.to_representation(attribute)
File "D:\All\Back-end Django\REST API Django\lib\site-packages\rest_framework\relations.py", line 413, in to_representation
raise ImproperlyConfigured(msg % self.view_name)
Exception Type: ImproperlyConfigured at /books/
Exception Value: Could not resolve URL for hyperlinked relationship using view name "book-detail". You may have failed to include the related model in your API, or incorrectly configured the `lookup_field` attribute on this field.
最佳答案
我也曾经遇到过这个问题,但我通过这样做解决了这个问题:
urls.py(项目)
您可能需要在 root urls.py
中为您的应用程序提供命名空间
path('your_url', include(('your_app.urls', 'your_app'), namespace="your_app"))
serializers.py
HyperlinkedIdentityField
class BookSerializer(serializers.HyperlinkedModelSerializer):
# add this
url = serializers.HyperlinkedIdentityField(view_name="your_app:book-detail")
class Meta:
model = Book
fields = ['id', 'url', 'title', 'subtitle', 'isbn']
urls.py (应用程序)
basename
router = routers.DefaultRouter()
# add basename
router.register('books', BookListView, basename="books")
文档
https://www.django-rest-framework.org/tutorial/5-relationships-and-hyperlinked-apis/
关于python - 无法使用 View 名称 "book-detail"解析超链接关系的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64290220/
我正在为 MIT OCW 类(class)做一些事情,它要求编写一个“图书馆”类(class)。现在我有这个: #include using namespace std; class Book{
ExcelWorkbook = py.load_workbook(FilePath) writer = pd.ExcelWriter(FilePath, engine = 'openpyxl') wr
我是 C++ 的学习者,我对构造函数和析构函数感兴趣。我编译了下面的代码,它返回了对 Book::~Book() 错误的 undefined reference 。但是当我注释掉析构函数时,它工作正常
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我正在使用 Google Books API在我的 Angular 项目中。我有书籍的不同静态类别的列表。单击特定类别时,我想从 Google Books API 获取搜索类别的书籍。 Google
我不知道如何做一些应该非常简单的事情。 我有两个实体:书架和书。一个书架可以放一本或多本书。这些实体中的每一个都有一个相应的 JpaRepository 暴露为使用 Spring Data Rest
我需要从 Booking.com 系统获取特定住宿的评分值。是否有 API 可以提供总体评分等信息以及系统中列出的属性的其他有用信息? 最佳答案 如果有人有同样的问题,我会简短地回答 - bookin
我需要从 Booking.com 系统获取特定住宿的评分值。是否有 API 可以提供总体评分等信息以及系统中列出的属性的其他有用信息? 最佳答案 如果有人有同样的问题,我会简短地回答 - bookin
有没有一种简单的方法可以使用 Google Book API 从 ISBN 获取 JSON 格式的图书封面? 最佳答案 您可以使用 isbn: 查询,如下所示: https://www.googlea
我是新手,所以这只是一个问题,我想知道哪个更有效,哪个提供最佳时间复杂度。 没有。 1 export default class BookingTabs extends Component {
在我一直在开发的应用程序中,我遇到了像 /books/:slug, :to => 'books#show', slug:/.*?/ 这样的路由。我很好奇这部分的作用 slug:/.*?/ ? 最佳答案
刚从使用 Books 应用程序示例的 Djangobook 教程中学习时,您通过多对多关系将 Book 与 Author 相关,并将 Book 与 Publisher 相关。您可以使用 p.book_
我刚启动 xcode 7 稳定版。在我当前的项目中,我正在从 web 服务下载图像。在 xcode 6.4 中工作正常。现在它没有显示任何图像并在日志中显示警告 -canOpenURL: failed
我在名为 DetailOrder 和 Book 的两个类中遇到映射问题。 问题如下所示。 Initial SessionFactory creation failed. org.hibernate.A
我正在尝试制作 CRUD+spring 应用程序来创建/删除/更新书籍。一切正常,但从数据库中搜索一本书。请帮忙。 @Controller public class BookController {
我完全是使用 CakePhp 的新手。我已经解决了一些问题,但我又对这个基本问题了如指掌。你能帮我解决这个问题吗? Notice (8): Undefined variable: books [APP
我在网上冲浪时遇到了一对多关系的问题,并且无法修复。我仔细检查了他们引用的 @Entity 声明 import javax.persistence.Entity; 之前我仅尝试单向 ManyToOne
刚开始在我的学校学习 node js。他们给了我们这个半完成的任务,我需要让下一个和上一个按钮起作用。但是,当我运行 index.html 时,控制台出现了一些错误。错误是: “获取 API 无法加载
我创建了一个网站,访问者可以使用turnjs 浏览一本书。我的页面是双页的 jpg,我希望它们能够动态加载。 代码如下: var flipbook = $('.flipbook'); flipboo
void displayInventory(const struct Book book[], const int size) { Idk y book[] 在 visual studio 中遇到
我是一名优秀的程序员,十分优秀!