Конвертеры параметров маршрутов в Django
По умолчанию параметр из URL приходит
в представление строкой. Но часто нужно,
чтобы это было число или особый формат.
Для этого в path используют
конвертеры (converters).
Конвертер пишут перед именем параметра
через двоеточие. Самый частый -
int: в параметр попадут
только цифры, и в представлении
это уже будет целое число:
urlpatterns = [
path('post/<int:id>/', views.post),
]
В представлении параметр нужно
принять с тем же именем. Так как
мы указали конвертер int,
в id попадет уже число,
а не строка:
from django.http import HttpResponse
def post(request, id):
return HttpResponse('post ' + str(id))
Другие полезные конвертеры:
-
str- любая строка без слэша (это значение по умолчанию) -
slug- буквы, цифры, дефис и подчеркивание -
uuid- UUID -
path- строка, которая может содержать слэши
Пример со slug:
urlpatterns = [
path('article/<slug:slug>/', views.article),
]
Сделайте маршрут вида
/user/:id/, где вместо
id должно быть число.
Используйте конвертер int.
Сделайте маршрут вида
/post/:slug/, где вместо
slug должны быть буквы,
цифры, дефис или подчеркивание.
Используйте конвертер slug.
Сделайте маршрут вида
/city/:name/ с конвертером
str. Пусть представление
выводит название города.