提问者:小点点

NoReverseMatch django-不是有效的视图函数或模式


目前使用Django 1.11。我得到一个例外

Reverse for 'book_details' not found. 'book_details' is not a valid view function or pattern name.
Request Method: GET
Request URL:    http://localhost:8000/library/book/c7311ecf-eba7-4e9d-8b1a-8ba4e075245a/
Django Version: 1.11
Exception Type: NoReverseMatch

我想在“详细信息”页面中使用“从我的模型中获取绝对url”的转到更新页面。当我取出参考文献时。id并使用get_absolute_url。我检查了“book_details”的名称是否正确引用。我可以转到页面,让书的细节正确呈现。在Django的管理控制台中,“查看站点”按钮也没有正确呈现,它显示了本地主机:8000/admin/r/13/c7311ecf-eba7-4e9d-8b1a-8ba4e075245a/因此它也没有获取库/书籍

当前<代码>

所需<代码>

我在哪里打错了,这不起作用?

文件中的设置:

是的,我有UUID作为主键。

views.py

class BookDetailsView(generic.DetailView):
"""
Generic class-based detail view for a Book.
"""
model = Book

url中。py

url(r'^book/(?P<pk>[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$', views.BookDetailsView.as_view(), name='book_details'),
url(r'^book/(?P<pk>[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})/update/$', views.BookUpdate.as_view(), name='book_update'),

模型中。py

教材(models.Model):

def get_absolute_url(self):
    """Returns the URL of the book for details"""
    return reverse('book_details', args=[str(self.id)])

共1个答案

匿名用户

尝试将pk作为关键字参数提供给reverse函数,

def get_absolute_url(self):
    return reverse('book_details', kwargs={ 'pk': str(self.id) })

另外,您在网址末尾缺少一个尾随斜杠,

url(r'^book/(?P<pk>[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})/$', views.BookDetailsView.as_view(), name='book_details'),