Схема URL для отдельных тем
Схема URL для страницы отдельной темы немного отличается от других схем URL, которые встречались нам ранее, потому что в ней используется атрибут id темы для обозначения запрашиваемой темы. Например, если пользователь хочет просмотреть страницу с подробной информацией по теме Chess (id=1), эта страница будет иметь URL-адрес http://localhost:8000/topics/1/. Вот как выглядит схема для этого URL-адреса из learning_logs/urls.py:
urls.py
...
urlpatterns = [
...
. .# Страница с подробной информацией по отдельной теме
. .url(r'^topics/(?P<topic_id>d+)/$', views.topic, name='topic'),
]
Рассмотрим регулярное выражение в схеме URL, r'^topics/(?P<topic_id>d+)/$'. Символ r сообщает Django, что последующая строка должна интерпретироваться без дополнительной обработки, а выражение заключено в кавычки. Вторая часть выражения, /(?P<topic_id>d+)/, описывает целое число, заключенное между двумя косыми чертами; это целое число сохраняется в аргументе topic_id. Круглые скобки, в которые заключена эта часть выражения, сохраняют значение из URL; часть ?P<topic_id> сохраняет совпавшее значение в topic_id; а выражение d+ совпадает с любым количеством цифр, заключенных между символами косой черты.
Когда Django находит URL-адрес, соответствующий этой схеме, вызывается функция представления topic(), в аргументе которой передается значение, хранящееся в topic_id. Значение topic_id используется для получения нужной темы внутри функции.