Итак, я учусь создавать адрес электронной почты для подтверждения при регистрации учетной записи с помощью Django
Это urls.py `from django.contrib import admin from django.urls import path, include from . import views
urlpatterns = [
path('', views.home, name="home"),
path('signup', views.signup, name="signup"),
path('activate/<uidb64>/<token>', views.activate, name="activate"),
path('signin', views.signin, name="signin"),
path('signout', views.signout, name="signout"),
]`
Это views.py
myuser = User.objects.create_user(username, email, pass1)
myuser.first_name = fname
myuser.last_name = lname
myuser.is_active = False
myuser.save()
messages.success(request, "Hey, Your Account has been successfully created. We have sent you a confirmation email. Please confirm your email in order to activate your account.")
#welcome email
subject = "Welcome to Django Login Project!!"
message = "Hello" + myuser.first_name + " !! \n" + "Welcome to Django Login Project!! \n Thank You for visiting our website \n We have sent you a confirmation email, Please confirm your email address in order to activate your account. \n\n Thanking You\n Shalini Singh"
from_email = settings.EMAIL_HOST_USER
to_list = [myuser.email]
send_mail(subject, message, from_email, to_list, fail_silently= True )
#email address confirmation
current_site = get_current_site(request)
email_subject = "Confirm your email @ Login Django Project!!"
message2 = render_to_string('email_confirmation.html',{
'name' : myuser.first_name,
'domain' : current_site.domain,
'uid' : urlsafe_base64_encode(force_bytes(myuser.pk)),
'token' : generate_token.make_token(myuser)
})
email = EmailMessage(
email_subject,
message2,
settings.EMAIL_HOST_USER,
[myuser.email],
)
email.fail_silently = True
email.send()
return redirect('signin')
return render(request, "authentication/signup.html")
def activate(request, uidb64, token):
try:
uid = force_str(urlsafe_base64_encode)(uidb64)
myuser = User.objects.get(pk=uid)
except (TypeError, ValueError, OverflowError, User.DoesNotExist):
myuser = None
if myuser is not None and generate_token.check_token(myuser, token):
myuser.is_active = True
myuser.save()
login(request, myuser)
return redirect('home')
else:
return render(request, 'activation_failed.html')
`
Это tokens.py
from django.contrib.auth.tokens import PasswordResetTokenGenerator
from six import text_type
class TokenGenerator(PasswordResetTokenGenerator):
def _make_hash_value(self, user, timestamp):
return (
text_type(user.pk) + text_type(timestamp)
)
generate_token = TokenGenerator()
Это email_confirmation.html. `
{% autoescape off %}
Welcome to Django Login Project
Hello {{ name }}!!
Please confirm your email by clicking on following link.
Confirmation Link: http://{{ domain }}{% url 'activate' uidb64=uid token=token %}
{% endautoescape %}``
Это activation_failed.html
`{% autoescape off %}
Activation failed, Please try later!
{% endautoescape %}
Проблема в том, что я не могу активировать учетную запись. `
Когда я зарегистрировался, я получил это письмо
Добро пожаловать в проект Django Login Здравствуйте Шалини!!! Пожалуйста, подтвердите свой email, нажав на следующую ссылку. Ссылка для подтверждения: http://127.0.0.1:8000/activate/MjI/bi788k-0c89e2f93a3e1249d485f508305ab29aqq
и когда я нажимаю на ссылку, она показывает-
Активация не удалась, попробуйте позже!