gpt4 book ai didi

django - 注册后通过电子邮件而不是 URL 发送激活码

转载 作者:行者123 更新时间:2023-12-03 05:53:03 25 4
gpt4 key购买 nike

正如我们在不同的网站中看到的,用户注册后,它会向用户的电子邮件发送一个包含 6/5 个字符的激活码。用户应在网站上提交代码以激活其帐户。我正在尝试做同样的事情,但不知道如何使用 djoser 在 django-rest-framework 中做到这一点。

目前,我使用 Djoser 进行注册和激活。 Djoser 在电子邮件中发送激活 URL;单击时会激活帐户并且工作正常。

如何向用户发送用于激活的 6 个字符的字母数字代码,而不是发送整个 URL?

我正在使用:django-rest-framework,django-rest-framework-jwt,左塞尔

最佳答案

我在项目中使用了以下变体:

# models.py
import random

from django.conf import settings
from django.db import models


def generate_activation_code():
return ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(6))


class ActivationCode(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT)
code = models.CharField(max_length=6, default=generate_activation_code)


# views.py
from django.http import Http404

def register_user(request):
# create your `new_user` however you see fit
code = ActivationCode.objects.create(user=new_user)
send_mail(
'Activate Your Account',
'Here is the activation code: %s' % code,
'from@example.com',
[user.email]
)
render(request, 'activation_sent.html')

def check_activation_code(request, code):
try:
ActivationCode.objects.get(code=code)
# ... All set, activate & login the user, & delete the activation code
except ActivationCode.DoesNotExist:
raise Http404

return render(request, 'welcome.html')

增强功能可能包括向您在 View 中检查的ActivationCode添加到期日期,和/或清理旧代码的管理作业。

关于django - 注册后通过电子邮件而不是 URL 发送激活码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48106907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com