Я делал урок, но в django 2.1 вы должны использовать путь, как мне перевести на функцию пути совместимого с 2.1 django?
Нет , в django-2.x , вы можете использовать path
[Django-doc] или re_path
[Джанго-док] . Кроме того, на сегодняшний день url
[Django-doc] все еще поддерживается, но, вероятно, исчезнет в будущем.
re_path
фактически эквивалентен старому url
, поэтому вы можете написать это как:
<b>re_path</b>(
r'^activate/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
views.activate,
name='activate'
),
Создать полностью эквивалентный URL нелегко, поскольку Django поддерживает только преобразование по пяти путям по умолчанию :
Конвертеры путей
Следующие преобразователи пути доступны по умолчанию:
str
- Соответствует любой непустой строке, кроме разделителя path
, '/'
. Это значение по умолчанию, если конвертер не включен в выражение.
int
- соответствует нулю или любому положительному целому числу. Возвращает int
.
slug
- Соответствует любой строке slug
, состоящей из букв или цифр ASCII, а также символов дефиса и подчеркивания. Например,
Здание-ваш-первых-Джанго-сайт.
uuid
- соответствует форматированный UUID
. Чтобы предотвратить сопоставление нескольких URL-адресов на одной странице, необходимо включить тире и буквы
в нижнем регистре. Например, 075194d3-6885-417e-a8a8-6c931e272f00. Возвращает
UUID
экземпляр.
path
- Соответствует любой непустой строке, включая разделитель path
, '/'. Это позволяет сопоставить полный URL
path
, а не просто сегмент URL path
, как с str
.
Мы можем использовать slug
здесь, но это будет соответствовать больше , чем указанный URL:
<b>path</b>(
r'^activate/(<<b>slug:</b>uidb64>/<<b>slug:</b>token>/$',
views.activate,
name='activate'
),
Шаблон slug
принимает в качестве регулярного выражения :
class SlugConverter(StringConverter):
regex = '[-a-zA-Z0-9_]+'