我正在使用Django编写一个类,它将处理在用户创建帐户后从用户那里获取确认码。但是当函数被调用时,程序会创建一个新的随机代码,就像它应该的那样。一旦用户输入此代码并发出发布请求,问题就会出现。它生成的一个新代码,这是用户输入的代码将与之进行比较的代码。有什么办法可以绕过这个吗?
@method_decorator(login_required, name='dispatch')
class ConfirmEmail(View):
def __init__(self, **kwargs: Any) -> None:
super().__init__(**kwargs)
self.code = str(random.randint(1000, 9999))
def get(self, request):
email = request.GET.get('email')
phone = request.GET.get('phone')
send_mail(
"Confirmation Code",
"Your confirmation code is: " + self.code,
"to_email",
[email, ])
return render(request, "views/confirm_email.html")
def post(self, request):
confirmation_code = request.POST.get('confirmation_code', '')
print(confirmation_code)
print(self.code)
if confirmation_code == self.code:
return redirect('home')
else:
# The confirmation code is incorrect, display an error message.
return render(request, "views/confirm_email.html", {'error_message': 'Invalid confirmation code'})
字符串
1条答案
按热度按时间bbmckpt71#
如你所见。每次访问视图时都会调用init函数,代码将被重写。
解决这个问题的一个简单方法是将值存储在会话变量中。当你收到GET请求时,生成一个新的,因为get()方法有一个请求对象参数:
字符串