Всем доброго времени суток! Помогите, пожалуйста, устранить ошибку: Reverse for 'book_list_view' not found. 'book_list_view' is not a valid view function or pattern name. при попытке вывести список книг с формой для поиска на странице (http://127.0.0.1:8000 == name='book_list_view'). Без формы в шаблоне все Ok.
Имеется модель:
$ cat models.py
from django.db import models
class Book(models.Model):
title = models.CharField(u'Title', max_length=256)
abstract = models.CharField(u'Abstract', max_length=512)
def get_absolute_url(self):
return reverse('book:book_detail_view', kwargs={'pk': self.pk})
class Meta:
db_table = 'book'
def __str__(self):
return u'Book {}'.format(self.title)
Представление у url:
$ cat views.py
from django.views import generic
from django.db.models import Q
from .models import Book
class BookDetailView(generic.DetailView):
model = Book
template_name = 'book/book_detail_view.html'
class BookListView(generic.ListView):
model = Book
template_name = 'book/book_list_view.html'
paginate_by = 10
def get_queryset(self):
ft = self.request.GET.get('find_title')
fa = self.request.GET.get('find_abstract')
if ft and fa:
queryset = Book.objects.filter(Q(title__icontains=ft) &
Q(abstract__icontains=fa))
else:
queryset = Book.objects.all()
return queryset
$ cat urls.py
from django.urls import path
from . import views
app_name = 'book'
urlpatterns = [
path('', views.BookListView.as_view(), name='book_list_view'),
path('book/<str:pk>/', views.BookDetailView.as_view(), name='book_detail_view'),
]
Шаблон
{% extends "base.html" %}
{% block title %}The Books{% endblock %}
{% block content %}
<!--- При добавление этой формы возникает ошибка -->
<form action="{% url 'book_list_view' %}" method='GET'>
<input type="text" name="find_title" />
<input type="text" name="find_abstract" />
<button type="submit">Search</button>
</form>
<ul>
{% for item in object_list %}
<li><a href="{% url 'book:book_detail_view' item.pk %}">{{item.title}}</a></li>
{% endfor %}
</ul>
{% if is_paginated %}
<!--- здесь пагинатор -->
{% endif %}
{% endblock %}