Текущий путь не совпадает ни с одним из них. 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>
Вернуться на верх