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?

Вернуться на верх