Django 5 для начинающих

Прогресс по курсу:  9/1004

5.5 Разработка представлений списка и детальной информации
2 из 5 шагов пройдено
0 из 9 баллов  получено

Добавление шаблонов URL-адресов представлений

Шаблоны URL-адресов позволяют соотносить URL-адреса с представлениями.

Шаблон URL-адреса состоит из строкового шаблона, представления и опционально, имени, которое позволяет именовать URL-адрес в масштабе всего проекта.

Django просматривает каждый шаблон URL-адреса и останавливается на первом, который совпадает с запрошенным URL-адресом.

Затем Django импортирует представление, совпадающее с шаблоном URL-адреса, и исполняет его, передавая экземпляр класса HttpRequest и именованные или позиционные аргументы.

Внутри каталога приложения blog создайте файл urls.py и добавьте в него следующие ниже строки:

from django.urls import path
from . import views

app_name = 'blog'

urlpatterns = [
    # представления поста
    path('', views.post_list, name='post_list'),
    path('<int:id>/', views.post_detail, name='post_detail'),
]

В приведенном выше исходном коде определяется именное пространство приложения с помощью переменной app_name.
Такой подход позволяет упорядочивать URL-адреса по приложениям и при обращении к ним использовать имя.

С помощью функции path() определяются два разных шаблона:

Первый шаблон URL-адреса не принимает никаких аргументов и соотносится с представлением post_list.

Второй шаблон соотносится с представлением post_detail и принимает только один аргумент id, который совпадает с целым числом, заданным целым числом конвертора путей int.

Для захвата значений из URL-адреса используются угловые скобки. Любое значение, указанное в шаблоне URL-адреса как <parameter>, записывается в качестве строкового литерала. Для конкретного сопоставления и возврата целого числа используются конверторы путей, такие как <int:year>.

Например, <slug:post> будет, в частности, совпадать со слагом (строковым литералом, который может содержать только буквы, цифры, подчеркивания или дефисы).

Все предоставляемые веб-фреймворком Django конверторы путей можно посмотреть по адресу https://docs.djangoproject.com/en/5.0/topics/http/urls/#path-converters.

Если функции path() и конверторов будет недостаточно, то вместо них можно использовать re_path(), чтобы определять сложные шаблоны URL-адресов с помощью регулярных выражений Python.

Подробнее об определении шаблонов URL-адресов с помощью регулярных выражений можно узнать по адресу https://docs.djangoproject.com/en/5.0/ref/urls/#django.urls.re_path.

Если вы раньше с регулярными выражениями не работали, то, возможно, вам сперва захочется взглянуть на руководство по регулярным выражениям на странице https://docs.python.org/3/howto/regex.html.

Далее необходимо вставить шаблоны URL-адресов приложения blog в главные шаблоны URL-адресов проекта.

Отредактируйте файл urls.py, расположенный внутри каталога mysite проекта, придав ему следующий вид:

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

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

Новый шаблон URL-адреса, определенный с помощью функции include, ссылается на шаблоны URL-адресов, определенные в приложении blog, что-бы они были включены в рамки пути blog/.

Указанные шаблоны вставляются в рамки именного пространства blog. Именные пространства должны быть уникальными для всего проекта.

Позже можно будет легко ссылаться на URL-запросы блога, используя именное пространство, за которым следует двоеточие, и имя URL-запроса, например blog:post_list и blog:post_detail.

Подробнее о пространствах имен для URL-запросов можно узнать по адресу https://docs.djangoproject.com/en/5.0/topics/http/urls/#url-namespaces.


Будьте вежливы и соблюдайте наши принципы сообщества. Пожалуйста, не оставляйте решения и подсказки в комментариях, для этого есть отдельный форум.
Оставить комментарий
Нет обсуждений. Начните первое.