Как активировать пользователя, когда он подтверждает свой номер телефона с помощью Twilio в Django? Если пользователь не верифицирован, как деактивировать пользователя?
Как активировать пользователя, когда пользователь верифицирует свой номер телефона с помощью Twilio в Django? Если пользователь не верифицирован, как деактивировать пользователя?
Вот мой код.
в файле forms.py
class CreateUserForm(UserCreationForm):
email = forms.EmailField()
phone = forms.CharField(max_length=17)
country_code = forms.CharField(max_length=3, initial='+19')
class Meta:
model = User
fields = ['username', 'email', 'phone', 'password1', 'password2']
в файле views.py
def signupPage(request):
form = CreateUserForm()
# if request.method == 'GET':
# return render(request, 'user/signup.html')
if request.method == 'POST':
form = CreateUserForm(request.POST)
if form.is_valid():
user = form.save(commit=False)
user.is_active = False
user.save()
# ====================================
request.session['phone'] = form.cleaned_data['phone']
request.session['country_code'] = form.cleaned_data['country_code']
authy_api.phones.verification_start(
form.cleaned_data['phone'],
form.cleaned_data['country_code'],
)
return redirect('token_validation')
# ====================================
context = {'form': form}
return render(request, 'user/signup.html', context)
в файле views.py
Есть ли проблемы в функции token_validation?
def token_validation(request):
if request.method == 'POST':
form = TokenForm(request.POST)
if form.is_valid():
verification = authy_api.phones.verification_check(
request.session['phone'],
request.session['country_code'],
form.cleaned_data['token']
)
if verification.ok():
request.session['is_verified'] = True
messages.info(request, 'Your Phone Number is Verified, Please Enter Your Information.')
user.is_active = True
user.save()
return redirect('verified')
else:
for error_msg in verification.errors().values():
form.add_error(None, error_msg)
else:
form = TokenForm()
return render(request,'user/token_validation.html', {'form': form})
Здесь я получаю ошибку user.is_active = True
NameError: name 'user' is not defined
когда я пытаюсь сделать пользователя снова активным.
Как сделать пользователя снова активным, когда пользователь проверяет свой токен.
Здесь евангелист-разработчик Twilio.
Каждый запрос имеет свой собственный контекст, поэтому в запросе к token_validation
ваша предыдущая ссылка на user
уже не существует.
Вы должны сохранить ID пользователя в сессии, вместе с номером телефона и кодом страны, а затем загрузить пользователя из базы данных, используя этот ID.