Get_absolute_url не работает - выдает эту ошибку NoReverseMatch error
Я получаю эту ошибку, когда пытаюсь использовать get_absolute_url - что я делаю неправильно?
NoReverseMatch at /mega_archive/books/
Reverse for 'book' with arguments '('',)' not found. 1 pattern(s) tried: ['mega_archive/book/(?P<book>[-a-zA-Z0-9_]+)/\\Z']
views.py
def books(request):
books = Book.objects.all()
return render(request, 'mega_archive/books.html',{
'books':books
})
def book(request, book):
book = get_object_or_404(Book, slug=book)
return render(request, 'mega_archive/book_details.html', {
'book':book
})
urls.py
path('books/', views.books, name='books'),
path('book/<slug:book>/', views.book, name='book'),
models.py
def get_absolute_url(self):
return reverse('mega_archive:book', args=[self.slug])
def __str__(self):
return self.title
html
{% for book in books %}
<a href="{{book.get_absolute_url}}">{{book}}</a><br>
{% endfor %}
Кто-нибудь может указать, что я сделал неправильно?
get_absolute_url()
разрешает URL с именем 'mega_archive:book', который ожидает аргумент slug. Судя по сообщению об ошибке, аргумент slug не был предоставлен. Может ли он быть None
в объекте book
?