বাংলায় জ্যাঙ্গো

আজকের পর্বে আমরা ব্যাবহারকারীর লগিন করা, লগ আউট করা এবং রেজিষ্টেশন করা দেখব। এই কাজটিই করার জন্য আমরা ইতপূর্বে এডমিন পাতা ব্যাবহার করেছিলাম ( localhost:8000/admin)। কিন্তু সকল ব্যাবহারকারীর জন্য এই পাতা ব্যাবহার করতে দেয়া উচিত নয়। আমরা একটি লগিন পেজ তৈরী করব এবং ব্যাবহারকারী এই পেজের মাধ্যমে লগিন করতে পারবে এবং আমার আমাদের কোন একটি ভিউকে বলে দিতে পারি যে ইউজার লগিন করা ছাড়া আমাদের এই পেজটি দেখা যাবে না।

লগিন

প্রথমে আমাদেকে একটি লগিন ভিউ তৈরী করতে হবে । কাজটি আমরা একটি এপ তৈরী করে তার views.py এর মধ্যে করতে পারি। আবার প্রজেক্ট ডিরেক্টরী (যেখানে settings.py রয়েছে ) তে views.py তৈরী করেও করতে পারি।

banglaidj/banglaidj/views.py

def user_login(request):
    return render(request, 'login.html')

**উল্লেখ্য, ভিউ এর নাম শুধু login দেয়া যাবে না , কারন জ্যাঙ্গোর এই নামে লগিন ফাংশন রয়েছে।

templates/login.html

{% extends "base.html" %}

{% block content %}
  <h1>লগিন</h1>


  <form class='form' id="login_form" method="post" action="/login/">
            {% csrf_token %}
            Username: <input type="text" name="username" value="" size="50" />
            <br />
            Password: <input type="password" name="password" value="" size="50" />
            <br />

            <input type="submit" value="submit" />
  </form>
{% endblock content %}

 

method=’post’ অর্থ হল , আমরা ফর্মের মাধ্যমে কিছু ডাটা পোষ্ট করতে চাচ্ছি। action=”/login/” অর্থ আমাদের ফর্মটি পোষ্ট হবে /login/ ইউআরএল এ অর্থাৎ user_login ভিউ এ। name=”username”, name=”password” আমাদের ফর্ম ফিল্ডের নাম। আমরা এই ফিল্ডে পূরনকৃত তথ্য username password এর মধ্যমে পাব।

এই কাজটি পাওয়ার জন্য url তৈরী করি।

banglaidj/banglaidj/urls.py

from django.urls import path, include
from django.contrib import admin
from . import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('login/', views.user_login, name='login'),
    path('blog/', include('blog_post.urls'), name='home'),
    path('cost/', include('cost_management.urls'), name='cost'),
    path('information/', include('information.urls'), name='information'),

]

localhost:8000/login এ প্রবেশ করলে আমাদের লগিন পেজ দেখতে পাবো

username, password পূরন করে সাবমিট করলে প্রদত্ত তথ্য user_login এর মধ্যে গ্রহন করতে পারব।

ফর্ম আমাদের ভিউকে কি পাঠাচ্ছে ? দেখতে হলে user_login ভিউ এর মধ্য নিচের লাইনগুলো লিখি

if request.method == 'POST':
    print("we got post request")
    print(request.POST)

elif request.method == 'GET':
    print("It's a GET request")

আমরা যখন প্রথমবার লগিন পেজ লোড করি তখন রিকুয়েষ্ট এর ধরন হয় GET এবং যখন ফর্ম সাবমিট করি তখন POSTrequest.POST এর মাধ্যমে ফর্ম পোষ্ট করা ডাটা দেখতে পাব। ফর্ম পুরন করে সাবমিট করে টারমিনালে লক্ষ করুন

<QueryDict: {u'username': [u'harun'], u'csrfmiddlewaretoken': [u'ioTNGpgqnsnCSANRqsbVMSp4ktomYryFOYLG4Tab3xtmePEMQlsnvcVcWej6PU5l'], u'password': [u'password']}

আমরা একটি ডিক্সনারী পেয়েছি যাতে username, password, এবং csrfmiddlewaretoken ও পেয়েছি যেটা {{ csrf_token }} তৈরী হয়। এখান থেকে username, password সংগ্রহ করব।

if request.method == 'POST':
    username = request.POST.get('username')
    password = request.POST.get('password')

এখন আমাদের দেখা দরকার যে এই ইউজারনেম ও পাসওয়ার্ড এ কোন ইউজার আছে কি না। জ্যাঙ্গো ইউজার ম্যানেজ করার জন্য User নামে ক্লাস ব্যাবহার করে। authenticate ম্যাথডেটি ইউজারের username, password চেক করে । যদি কোন ইউজার পাই তাহলে একটি User অবজেক্ট রিটার্ন করে। login ম্যাথড ইউজারকে লগিন করে । সে জ্যাঙ্গো সেশনকে বলে দেয় যে এই ইউজার এখন লগিন অবস্থায় আছে ।

from django.shortcuts import render
from django.http import HttpResponse, HttpResponseRedirect
from django.contrib.auth import authenticate, login, logout

def user_login(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        user = authenticate(username=username, password=password)
        if user:
            login(request, user)
            return render(request, 'thankyou.html')
        else:
            return HttpResponse("Username or password incorrect")
    return render(request, 'login.html')

যদি ইউজার , পাসওয়ার্ড ঠিক থাকে তাহলে hankyou.html পেজ দেখাবে, ভুল হলে ইরর বার্তা দেখাবে। (** টেমপ্লেট এ hankyou.html ফাইলটি তৈরী করি)

createsuperuser দিয়ে তৈরী করা ইউজার দিয়ে লগিন করি। অথবা জ্যাঙ্গো এডমিন পেজ (localhost:8000/admin) এর user সেকশন থেকে নতুন ইউজার তৈরী করে /login পেজ টেষ্ট করি।

লগ আউট:

প্রথমে লগআউট view তৈরী করি।

# banglaidj/views.py
.......
......

def user_logout(request):
    logout(request)
    return HttpResponseRedirect('/login')

url :

banglaidj/banglaidj/urls.py

…..

path('login/', views.user_login, name='login'),
path('logout/', views.user_logout, name='logout'),

লগআউট বাটন:

templates/thankyou.html

{% extends "base.html" %}

{% block content %}
<h1>স্বাগতম </h1>
<p>লগিন সম্পন্য হয়েছে</p>
<a class="btn btn-primary" href="{% url 'logout' %}">Log Out</a>
{% endblock content %}

এই পর্বে লগিন ও লগআউটের মূল ব্যাবহার গুল দেখলাম, আগামী পর্বে এই কোডকেই সুন্দর করে সাজাবো এবং লগিন লগআউটের আরো কিছু ব্যাবহার দেখব।

Leave a Reply

Your email address will not be published. Required fields are marked *