Email Verification
ইমেইল ভেরিফিকেশন বেশিরভাগ সময় ইউজার রেজিস্ট্রেশন এর সময় এবং পাসওয়ার্ড রিসেট এর সময় ইমেইল ভেরিফিকেশন এর দরকার হয়
settings.py
#gmail_send/settings.py
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'olee.techs@gmail.com'
EMAIL_HOST_PASSWORD = 'jzsbfkxvmxiabwow' #past the key or password app here
EMAIL_PORT = 587
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = 'from oleetech'
ইউজার রেজিস্ট্রেশন এর সময়
forms.py
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
class RegistrationForm(UserCreationForm):
email = forms.EmailField()
class Meta:
model = User
fields = ['username', 'email', 'password1', 'password2']
views.py
from django.contrib.auth.models import User
from django.urls import reverse
from django.core.mail import send_mail
from django.contrib.auth.tokens import default_token_generator
from django.shortcuts import render, redirect
from .forms import RegistrationForm
from django.template.loader import render_to_string
def register(request):
if request.method == 'POST':
form = RegistrationForm(request.POST)
if form.is_valid():
# create user object
user = form.save()
# generate token and send email
token = default_token_generator.make_token(user)
subject = 'Verify your email address'
message = render_to_string('verify_email.html', {
'user': user,
'token': token,
'url': request.build_absolute_uri(reverse('verify_email', args=[token]))
})
send_mail(subject, message, None, [user.email], fail_silently=False)
return redirect(reverse('index'))
else:
form = RegistrationForm()
return render(request, 'registration.html', {'form': form})
def verify_email(request, token):
try:
user = User.objects.get(pk=default_token_generator.check_token(token))
user.is_active = True
user.save()
return redirect(reverse('index'))
except User.DoesNotExist:
return redirect(reverse('register'))
Templates
#verify_email.html
<p>Hi {{ user.username }},</p>
<p>Please click the link below to verify your email address:</p>
<p><a href="{{ url }}">{{ url }}</a></p>
<p>Thank you for registering!</p>
#registration.html
<h2>Register</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Register</button>
</form>
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('',views.index,name='index'),
path('/register', views.register, name='register'),
path('verify-email/<str:token>/', views.verify_email, name='verify_email'),
]
Last updated