Django Сохранить путь в переменную

#django #django-urls

Вопрос:

У меня есть путь django, который передает нужный мне URL-адрес, но я хочу сохранить его в переменной, которую я могу использовать в почтовом API.: path('activate/(<uidb64>[0-9A-Za-z_-] )/(<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})', views.activate, name='activate'),

 "uid": urlsafe_base64_encode(force_bytes(account.pk)),
'token': password_reset_token.make_token(account),
 

Я хочу, чтобы строки, чтобы иметь значение, подобное этому: http://127.0.0.1:8000/auth/activate/(NDM[0-9A-Za-z_-] )/(as9osn-a59ae3d7196bb1fa693e770fb87f19c1[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})

Я получаю это: http://127.0.0.1:8000/auth/activate/NTQ/asbda1-165d68dbe6fee8c47f5099c4ab709c48

Ответ №1:

Вы используете синтаксис регулярных выражений вместо синтаксиса пути. Таким образом, вы должны использовать re_path(…) функцию [Django-doc] для указания регулярного выражения или преобразования его в синтаксис пути. Таким образом, мы можем реализовать это с помощью:

 from django.urls import re_path

urlpatterns = [
    # ⋮,
    re_path('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'),
# ⋮
]