Я не смогу подтвердить, что вся функция регистрации работает, но чтобы ответить на ваш конкретный вопрос, ваш код создает ссылку для активации, которая имеет значение:
activation_link = "{0}/?uid={1}&token{2}".format(current_site, uid, token)
, который, если вы посмотрите внимательно, создает что-то вроде:
http://example.com/?uid=....&token=....
но ваш путь в urls.py равен
path('activate/<str:uid>/<str:token>', user_views.activate, name='activate')
, что означает, что он ожидает что-то вроде
http://example.com/activate/..../....
Следовательно, исправление состоит в том, чтобы просто поменять Activation_link на
activation_link = "{0}/activate/{1}/{2}".format(current_site, uid, token)
Опять же, просто задаю конкретный вопрос, который вы задаете.
Помимо вашего вопроса, вы можете посмотреть существующие пакеты, такие как django-registration или более полный пакет, такой как django-allauth (который поддерживает поток регистрации и социальные входы в систему, если потребуется позже)