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

时间:2017-06-25 23:45:56

标签: python 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

我想在详情页面中使用我的模型中的get_absolute_url转到更新页面。当我取出对.id的引用并使用get_absolute_url时。我查看了这个名字" book_details"被正确引用。我可以转到页面并正确呈现书籍详细信息。在Django的管理控制台中,网站上的"视图"按钮也没有正确呈现它显示这个localhost:8000 / admin / r / 13 / c7311ecf-eba7-4e9d-8b1a-8ba4e075245a /所以它不会得到图书馆/书籍

当前 <a href =" {{ book.id }}/update">Update</a>

期望 <a href =" {{ book.get_absolute_url }}/update">Update</a>

我在哪里错误输入此内容?

文件中的设置:

是的,我确实将UUID作为主键。

views.py

class BookDetailsView(generic.DetailView):
"""
Generic class-based detail view for a Book.
"""
model = Book
urls.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'),
models.py

中的

class Book(models.Model):

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

1 个答案:

答案 0 :(得分: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'),