Ошибка Python/Django "страница не найдена": "Текущий путь, ... не совпадает ни с одним из этих путей".

Я изучаю главу 18 в Python Crash Course Эрика Маттеса. Я использую Django 4.0.1, а в книге используется 2.2.0, поэтому я вижу, что у других людей возникают такие же проблемы, как и у меня, с этим разделом.

В других подобных вопросах на stackoverflow по этой проблеме предлагаемые решения с использованием url вместо path также кажутся устаревшими. Поэтому решения на сайте, к сожалению, мне не помогли.

Проблема: когда я открываю http://localhost:8000/ и нажимаю на "темы", я получаю ошибку 404 not found следующим образом:

Page not found (404)
Request Method: GET
Request URL:    http://localhost:8000/(%25%20url%20'learning_logs:topics'%20%25%7D
Using the URLconf defined in learning_log.urls, Django tried these URL patterns, in this order:

admin/
[name='index']
topics/ [name='topics']
The current path, (% url 'learning_logs:topics' %}, didn’t match any of these.

Однако при ручном переходе по адресу http://localhost:8000/topics страница отображается как положено. Я считаю, что это проблема из-за моего urls.py, расположенного в папке app.

Вот мой urls.py в learning_logs (app), где, как я думаю, кроется проблема:

from django.urls import path
from . import views

app_name = 'learning_logs'
urlpatterns = [
    #Home page
    path('', views.index, name='index'),
    #Page that shows all topics.
    path('topics/', views.topics, name='topics'),
    ]

Вот мой urls.py в learning_log (основной проект):

from django.contrib import admin
from django.urls import path, include


urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('learning_logs.urls')),
    ]

views.py

from django.shortcuts import render

from .models import Topic

# Create your views here.
def index(request):
    """The home page for Learning Log."""
    return render(request, 'learning_logs/index.html')
    
def topics(request):
    """Show all topics."""
    topics = Topic.objects.order_by('date_added')
    context = {'topics': topics}
    return render(request, 'learning_logs/topics.html', context)

base.html найден в папке template/learning_logs:

<p>
    <a href="{% url 'learning_logs:index' %}" >Learning Log</a> -
    <a href="(% url 'learning_logs:topics' %}" >Topics</a>
</p>

{% block content %} {% endblock content %}

topics.html

{% extends "learning_logs/base.html" %}

{% block content %}

<p> Topics </p>

<ul>
    {% for topic in topics %}
    <li> {{topic}}</li>
    {% empty %}
    <li> No topics have been added yet.</li>
    {% endfor %}
</ul>

{% endblock content %}

и, наконец, index.html:

{% extends "learning_logs/base.html" %}

{% block content %}
<p>Learning Log helps you keep track of your learning, for any topic you're 
learning about.</p>
{% endblock content %}

Заранее благодарю вас за помощь.

Комментарий под моим вопросом Виллема Ван Онсема ответил на мой вопрос, оказалось, что это была опечатка.

Темы не начали шаблон url tagb с {%... - Виллем Ван Онсем

Вернуться на верх