Используя 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().
А браузер все еще имеет тот же вывод