У меня возникли некоторые трудности с шаблонами URL Django. Я относительно новичок в Джанго. Итак, я пытаюсь привыкнуть к лучшим практикам, когда речь идет о создании приложений с использованием Django. Теперь вот моя проблема. Зачастую, когда я замечал, что два из моих URL-адресов имеют сходство, Django часто путает их, и я должен сделать один из URL-адресов чрезвычайно отличным, чтобы он мог работать. Почему это ? Несмотря на то, что я прямо упомянул, какой URL должна быть опубликована конкретная форма. Вот ошибка, с которой я сталкиваюсь
url(r'book/collection/read/$', ReadBookList.as_view(), name='read_book_list'),
url(r'book/(?P<pk>\w+)/$', BookDetail.as_view(), name='book_detail'),
<li class="nav-item active">
<a class="nav-link" href="{% url 'library:read_book_list' %}">
<i class="fa fa-check-circle"></i>
<span>Books You Read</span></a>
</li>
Теперь, когда я перехожу по этой ссылке, она продолжает переходить в подробный вид вместо другой ссылки. Что я могу делать не так? И что является лучшим способом работы с шаблонами URL, чтобы Django не путал отображение с неверным URL. Например, список URL в моем приложении библиотеки
# Book urlpatterns
url(r'book/$', BookList.as_view(), name='book_list'),
url(r'book/add/$', BookCreate.as_view(), name='book_create'),
url(r'book/(?P<pk>\w+)/$', BookDetail.as_view(), name='book_detail'),
url(r'book/(?P<pk>\w+)/edit/$', BookUpdate.as_view(), name='book_update'),
url(r'book/(?P<pk>\w+)/delete/$',BookDelete.as_view(), name='book_delete'),
url(r'book/collection/read/$', ReadBookList.as_view(), name='read_book_list'),
url(r'book/mark/read/$', book_mark_read, name='mark_read'),
url(r'book/search/results/$',BookSearch.as_view(), name='book_search'),
#Book REST API urls
url(r'book/api/v1/$', BookListApi.as_view(), name='api_book_list'),
url(r'book/api/v1/(?P<pk>\w+)/$', BookDetailApi.as_view(), name='api_book_detail'),
Журнал ошибок
NoReverseMatch at /library/book/collection/read/
Reverse for 'book_detail' with arguments '('',)' not found. 1 pattern(s) tried: ['library/book/(?P<pk>\\w+)/$']
Request Method: GET
Request URL: http://127.0.0.1:8000/library/book/collection/read/
Django Version: 1.11.10
Exception Type: NoReverseMatch
Exception Value:
Reverse for 'book_detail' with arguments '('',)' not found. 1 pattern(s) tried: ['library/book/(?P<pk>\\w+)/$']