Как добавить uuid к url в urls.py django?

У меня есть приложение django с аутентификацией и верификацией по электронной почте. При создании пользователя отправляется активационное письмо со ссылкой внутри, когда пользователь нажимает на эту ссылку, она никуда не ведет.

views.py

class customer_register(CreateView):
    model = User
    form_class = CustomerSignUpForm
    template_name = 'authentication/customer_register.html'
   
    def form_valid(self, form):
        user = form.save()
        user.token = str(uuid.uuid4())
        subject = 'Verify your account | Zane'
        message = f"http://127.0.0.1:8000/accounts/verify/{user.token}/"
        recipient_list = [user.email]
        send_mail(
            subject,
            message,
            'from@example.com',
            ['to@example.com'],
            fail_silently=False,
        )
        return redirect('/')




def activate(request, token):
    try:
        obj = models.User.objects.get(email_token = token)
        obj.signup_confirmation = True
        obj.save()
        return HttpResponse('Your account is verified')

    except Exception as e:
        return HttpResponse('Invalid token')

urls.py

path('verify/<uuid:pk>/', views.activate, name='activate'),

models.py

...
token = models.CharField(max_length=200, blank=True)
signup_confirmation = models.BooleanField(default=False)

Интересно, что мне нужно вставить в мой url, чтобы запустить мою функцию?

Я бы переписал ваше активное представление как класс. Вот пример:

class ActivateView(LoginRequiredMixin, View):
    def get(self, request, *args, **kwargs):
       token = kwargs['pk']
       try:
           obj = User.objects.get(email_token = token)
           obj.signup_confirmation = True
           obj.save()
           return HttpResponse('Your account is verified')

       except Exception as e:
           return HttpResponse('Invalid token')

urls.py

path('verify/<uuid:pk>/', ActivateView.as_view(), name='activate'),
       
Вернуться на верх