Используя URLconf, определенный в learning_log.urls, Django попробовал эти шаблоны URL, в таком порядке:

Ниже приведены мои шаблоны url из журналов обучения

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

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

Ниже приведен url, который я добавляю

"""Defines URL patterns for learning_logs"""

from django.urls import path

from . import views

app_name = 'learning_logs'
urlpatterns = {
# Home page

path('', views.index, name='index'),

# Show all topics
path('topics', views.topics, name='topics'),

# Detail page for a single topic
path(r'^topics/(?P<topic_id>\d+)/$', views.topic, name='topic', ),
# Page for adding a new topic
path('new_topic', views.new_topic, name='new_topic'),

}

Ниже приведена ошибка, которую я получаю из браузера

Using the URLconf defined in learning_log.urls, Django tried these URL patterns, in this 
order:

admin/
learning_logs/ new_topic [name='new_topic']
learning_logs/ ^topics/(?P<topic_id>\d+)/$ [name='topic']
learning_logs/ topics [name='topics']
learning_logs/ [name='index']
The current path, learning_logs/topics/(?P1\d+)/, didn’t match any of these.

You’re seeing this error because you have DEBUG = True in your Django settings file. Change 
that to False, and Django will display a standard 404 page.

Мое окружение версии Python следующее Python 3.10 Django 4.1.1 IDE-PyCharm

Удалите ^ в шаблоне url. Этот символ означает: начало полного пути url. но в вашем случае это не начало полного пути, потому что ваш url начинается с learning_logs/.

Вот что я получаю из терминала после удаления ^ ... ?: (2_0.W001) Ваш шаблон URL 'topics/$' [name='topics'] имеет маршрут, который содержит '(?P<', начинается с '^' или заканчивается '$'. Вероятно, это было недосмотр при миграции на django.urls.path(). ?: (2_0.W001) Ваш шаблон URL 'topics/(?P<topic_id>\d+)/$' [name='topic'] имеет маршрут, который содержит '(?P<topic_id>\d+)/$'. маршрут, который содержит '(?P<', начинается с '^' или заканчивается '$'. Это было скорее всего, это была ошибка при переходе на django.urls.path().

А браузер все еще имеет тот же вывод

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