সো আমরা আসো আজকে ইমেল এ ক্লিক করার সাথে সাথে একজন ইউজার এর একাউন্ট যেনো এক্টিভেট হয় সেটার কাজ করবো। এখন আমাদের সেন্ড করা মেইল এ কিন্তু একটা uid ছিল আর টোকেন ছিল। আমরা ইউজার এর সেই uid দিয়ে চেক করবো কে সেই ইউজার আর সেই uid কে decode করে user এর ডাটা বের করে আনবো আর সেই সাথে token টা চেক করে দেখবো যে সেটার ডেট এক্সপায়ার হয়ে গেলো কিনা।
যদি সব ঠিক থাকে তাইলে তার is_active কে True করে দিয়ে তাকে লগইন লিংক এ পাঠিয়ে দিবো আর যদি সব ঠিক না থাকে তাইলে তাকে রেজিস্ট্রেশন পেজে পাঠায় দিবো।
এখানে আমরা সেই বহুল পরিচিত ফাংশন based ভিউ কে ইউজ করবো।
def activate(request, uid64, token):
try: # Error handling kortechi. uid, user nao thakte pare tar mane sekhan theke error asar somvabona ache
# sejonne code ke try er moddhe rakhlam
uid = urlsafe_base64_decode(uid64).decode() # encode kora sei uid ke decode kortechi
user = User._default_manager.get(pk=uid) # decode er por je uid pelam seta kon
# user er seta janar jonne ei code ta
except(User.DoesNotExist):
user = None
if user is not None and default_token_generator.check_token(user, token):
user.is_active = True
user.save()
return redirect('login')
else:
return redirect('register')
patient/urls.py
from rest_framework.routers import DefaultRouter
from django.urls import path, include
from . import views
router = DefaultRouter() # amader router
router.register('list', views.PatientViewset) # router er antena
urlpatterns = [
path('', include(router.urls)),
path('register/', views.UserRegistrationApiView.as_view(), name='register'),
path('active/<uid64>/<token>/', views.activate, name = 'activate'),
]