URL-адрес редактируемой записи неправильно привязывается в Django (Python crash course 3rd Ed.)
Я работаю над книгой Python Crash Course Эрика Маттеса. В главе 19 я начинаю сталкиваться с проблемами. Раздел 'Edit Entry' не загружается корректно при нажатии на ссылку. Ссылка отображается там, где должна, с текстом, который должен быть, но при нажатии на ссылку я получаю следующее сообщение в браузере:
Page not found (404)
Request Method: GET
Request URL: http://localhost:8000/topics/1/%7Burl%20'learning_logs:edit_entry'%20entry.id%7D
Using the URLconf defined in ll_project.urls, Django tried these URL patterns, in this order:
admin/
[name='index']
topics/ [name='topics']
topics/<int:topic_id>/ [name='topic']
new_topic/ [name='new_topic']
new_entry/<int:topic_id>/ [name='new_entry']
edit_entry/<int:entry_id>/ [name='edit_entry']
The current path, topics/1/{url 'learning_logs:edit_entry' entry.id}, didn’t match any of these.
runserver показывает в терминале такой вывод:
Not Found: /topics/1/{url 'learning_logs:edit_entry' entry.id}
[10/Jul/2024 09:49:24] "GET /topics/1/%7Burl%20'learning_logs:edit_entry'%20entry.id%7D HTTP/1.1" 404 3357
Django версии 5.0.6 Версия Python 3.12.4
Вот соответствующий код, который у меня есть на данный момент в проекте для справки:
Я проверил свой код на соответствие коду в книге, а также на соответствующей странице github, чтобы понять, есть ли синтаксические ошибки, опечатки, обновленный код на его github и т.д., и все выглядит правильно. Когда я ввожу URL в браузере, он приводит меня на правильную страницу, но ссылка, похоже, добавляет весь текст, включая фигурные скобки, на который ссылается. Цитаты, похоже, правильно отформатированы и подобраны. Поиск в Google не дал никаких, казалось бы, релевантных ответов, а все, что я нашел, похоже, касается проблемы введения фигурных скобок в вывод, а не предотвращения их "утечки" в него. Я не могу найти никакой реальной разницы между тем, как другие ссылки/урлы были добавлены в проект и в этот. Все остальное работает, как и ожидалось.
Скорее всего, это есть в одном из ваших шаблонов
<a href="{url 'learning_logs:edit_entry' entry.id}">your link</a>
.
Вам следует заменить это на <a href="{% url 'learning_logs:edit_entry' entry.id %}">your link</a>
, тогда все снова будет работать :)