১১-৩ : লগইন ও লগআউট

এই মডিউলে দেখব ক্লাস বেসড ভিউ , LoginView ও LogoutView ব্যবহার করে কিভাবে লগইন ও লগআউটের কাজ করা যায়।

user_login( ) ফাংশনের অনুরুপ ক্লাস UserLoginView(LoginView) লিখে ফেলি-

Code:: 11.3.1 author/views.py

from django.shortcuts import render, redirect
from . import forms
from django.contrib.auth.forms import  AuthenticationForm, PasswordChangeForm
from django.contrib.auth import authenticate, login , update_session_auth_hash, logout
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from posts.models import Post
from django.contrib.auth.views import LoginView, LogoutView
from django.urls import reverse_lazy
# Create your views here.

...
...
...

class UserLoginView(LoginView):
    template_name = 'register.html'
    # success_url = reverse_lazy('profile')
    def get_success_url(self):
        return reverse_lazy('profile')
    def form_valid(self, form):
        messages.success(self.request, 'Logged in Successful')
        return super().form_valid(form)
    
    def form_invalid(self, form):
        messages.success(self.request, 'Logged in information incorrect')
        return super().form_invalid(form)
    
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['type'] = 'Login'
        return context

    
...
...
...

এখানে, template_name হিসেবে 'register.html' রাখা হয়েছে, টেমপ্লেট ফাইলটি খেয়াল করলে দেখা যাবে সেখানে <form> ব্যবহার করা হয়েছে, কিন্ত আমরা 'register.html' ফাইলে ফর্ম পাঠালাম কিভাবে? উত্তর হলো- get_context_data মেথডে context এর মধ্যে পাঠানো হয়েছে ।

author/urls.py ফাইলটি নিচের মত করে লিখে ফেলি-

প্রজেক্টটি রান করে নতুন করে লগিন করলে দেখতে পাব আমাদের ক্লাস-বেসড লগইন মেকানিজম সঠিকভাবে কাজ করছে ।

এবার লগ-আউটের পালা । অবশ্য লগ-আউটের জন্য খুব বেশি কাজ করতে হবে না ।শুধু author/urls.py ফাইলটি নিচের মত করে লিখে ফেলি-

Code:: 11.3.2 author/urls.py

from django.contrib import admin
from django.urls import path, include
from . import views
from django.contrib.auth.views import LogoutView
urlpatterns = [
    path('register/', views.register, name='register'),
    # path('login/', views.user_login, name='user_login'),
    path('login/', views.UserLoginView.as_view(), name='user_login'),
    # path('logout/', views.user_logout, name='user_logout'),
    path('logout/', views.LogoutView.as_view(), name='user_logout'),
    path('profile/', views.profile, name='profile'),
    path('profile/edit', views.edit_profile, name='edit_profile'),
    path('profile/edit/pass_change/', views.pass_change, name='pass_change'),
]

এখানে , LogoutView ক্লাস-টি ইমপোর্ট করার পর সরাসরি ব্যবহার করা হয়েছে।

এখন আমরা ভিউ ক্লাসগুলোর যেগুলো এক্সেস করার জন্য ইউজার লগড-ইন থাকা প্রয়োজন সেগুলোতে ক্লাস-বেস login_required ডেকোরেটর এ্যাড করে ফেলি-

Code:: 11.3.3 posts/views.py

Last updated