Именованные параметры в re_path Django
В re_path параметры задают
именованными группами. Имя группы
попадет в представление как аргумент
функции.
Давайте сделаем маршрут, где
вместо id могут быть
только цифры:
from django.urls import re_path
from main import views
urlpatterns = [
re_path(
r'^post/(?P<id>\d+)/$',
views.post
),
]
В представлении примите аргумент
с тем же именем, что и в группе
(?P<id>...):
from django.http import HttpResponse
def post(request, id):
return HttpResponse('post ' + id)
Здесь \d+ означает «одна или
больше цифр». В отличие от path
с конвертером int, значение
из регулярки приходит строкой.
Давайте сделаем маршрут
со slug - латинские буквы
в нижнем регистре, цифры и дефис:
urlpatterns = [
re_path(
r'^article/(?P<slug>[a-z0-9-]+)/$',
views.article
),
]
В представлении примите параметр
slug:
from django.http import HttpResponse
def article(request, slug):
return HttpResponse('article ' + slug)
Сделайте через re_path
маршрут /user/:id/, где
id - только цифры. Пусть
представление выводит этот id.
Сделайте через re_path
маршрут /article/:slug/,
где slug состоит из латинских
букв в нижнем регистре, цифр
и дефиса.
В файле urls.py объявлены
следующие маршруты:
urlpatterns = [
re_path(
r'^user/(?P<username>\w+)',
views.user_profile
),
re_path(
r'^post/(?P<post_id>\d+)',
views.post_detail
),
re_path(
r'^category/(?P<category_slug>[\w-]+)',
views.category_view
),
]
Сделайте для них функции-представления, отдающие соответствующий текст.