Поскольку Django >2.2
, urlsafe_base64_encode будет возвращать строку вместо строки байтов, так что вам больше не придется вызывать .decode()
после urlsafe_base64_encode
.
Изменено в Django2.2: В более старых версиях вместо строки возвращается строка байтов.
Следуйте рекомендациям, которые вы включили в свой вопрос, проблема Reverse for 'activate' not found
исходит из этого:
{% autoescape off %}
Hi {{ user.username }},
Please click on the link to confirm your registration,
http://{{ domain }}{% url 'activate' uidb64=uid token=token %}
{% endautoescape %}
Есть 2 случая, которые могут привести к этой проблеме:
- Ваш путь:
path('activate/<uidb64>/<token>/', views.activate, 'activate'),
Вы должны назвать свое мнение следующим образом:
path('activate/<uidb64>/<token>/', views.activate, name='activate'),
Если ваша точка зрения находится на уровне сайта (внутри URL-адресов приложения django, а не в ROOT_URLS), вам может потребоваться добавить
app_name = 'your_app_name'
поверх вашего
urlpatterns
внутри
urls.py
.А затем внутри вашего почтового шаблона:
{% autoescape off %}
Hi {{ user.username }},
Please click on the link to confirm your registration,
http://{{ domain }}{% url 'your_app_name:activate' uidb64=uid token=token %}
{% endautoescape %}
Надеюсь, это поможет!