Текущий путь не совпадает ни с одним из них. Django Project/ Learning_Log
Я изучаю работу с Django по книге Python Crash Course Эрика Маттеса. Я следую всем рекомендациям и пишу код один в один как в книге, но столкнулся с такой проблемой. Я не могу перейти на подробную страницу темы по ссылке на тему, но вручную могу.
Используя URLconf, определенный в файле learning_log.urls, Django попробовал эти шаблоны URL, в таком порядке: 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'] Текущий путь, topics/% url 'learning_logs:topic' topic.id %, не совпал ни с одним из этих путей.
.
Итак, мой код представлен ниже. Я действительно не понимаю, что я делаю неправильно.
Мои шаблоны url:
from django.urls import path, re_path
from . import views
app_name = 'learning_logs'
urlpatterns = [
# Home page
path('', views.index, name='index'),
# Page with the list of all topics
path('topics/', views.topics, name='topics'),
# Page with detailed topic information
path('topics/<int:topic_id>/', views.topic, name='topic'),
]
шаблоны тем
{% extends "learning_logs\base.html" %}
{% block content %}
<p> Topics</p>
{% if topics %}
<ul>
{% for topic in topics %}
<li>
<a href="% url 'learning_logs:topic' topic.id %">{{ topic }}</a>
</li>
{% endfor %}
</ul>
{% else %}
<p>No topics have been added yet.</p>
{% endif %}
<a href="{% url 'learning_logs:new_topic' %}">Add a new topic:</a>
{% endblock content %}
шаблоны тем
{% extends "learning_logs/base.html" %}
{% block content %}
<p> Topic: {{ topic }}</p>
<p> Entries:</p>
<p>
<a href="{% url 'learning_logs:new_entry' topic.id %}">Add new entry</a>
</p>
<ul>
{% for entry in entries %}
<li>
<p>{{ entry.date_added|date:'M d, Y H:i' }}</p>
<p>{{ entry.text|linebreaks }}</p>
<p>
<a href="{% url 'learning_logs:edit_entry' entry.id %}">Edit entry</a>
</p>
</li>
{% empty %}
<li>No entries have been added yet.</li>
{% endfor %}
</ul>
{% endblock content %}
и взгляды
def index(request):
# Home page
return render(request, 'learning_logs/index.html')
def topics(request):
# Shows all topic
topics = Topic.objects.order_by('date_added')
context = {'topics': topics}
return render(request, 'learning_logs/topics.html', context)
def topic(request, topic_id):
topic = Topic.objects.get(id=topic_id)
entries = topic.entry_set.order_by('-date_added')
context = {'topic': topic, 'entries': entries}
return render(request, 'learning_logs/topic.html', context)
Пожалуйста, кто-нибудь может объяснить мне, что я должен сделать, чтобы это заработало?
Отсутствуют скобки вокруг кода генерации URL, поэтому браузер использует код шаблона как относительный сегмент URL (topics/
+ % url 'learning_logs:topic' topic.id %
).
<a href="{% url 'learning_logs:topic' topic.id %}">{{ topic }}</a>