4 වන කොටස: පරිශීලක ගිණුම් (User Authentication)

පරිශීලකයින්ට ගිණුම් සෑදීමට, ඇතුල් වීමට සහ පිටවීමට සලස්වන ආකාරය.


වාසනාවකට මෙන්, පරිශීලක ගිණුම් කළමනාකරණය සඳහා අවශ්‍ය සියලුම දේ (මුරපද හැසිරවීම, sessions, අවසර දීම්) ඇතුළත්, ඉතාමත් ආරක්ෂාකාරී සහ සම්පූර්ණ පද්ධතියක් Django විසින්ම අපට සපයයි. අපට එය මුල සිට නිර්මාණය කිරීමට අවශ්‍ය නැත; කළ යුත්තේ එය අපගේ යෙදුමට සම්බන්ධ කර, අවශ්‍ය වෙබ් පිටු (templates) නිර්මාණය කිරීම පමණි.

සෑම ක්‍රියාවලියක් සඳහාම, අපට අංග 3ක් අවශ්‍ය වේ:

  • URL: පරිශීලකයා පිවිසෙන වෙබ් ලිපිනය (උදා: /signup/).
  • View: එම URL එකට අදාළව ක්‍රියාත්මක වන Python කේතය.
  • Template: පරිශීලකයාට පෙනෙන HTML පිටුව.

පළමුව, නව පරිශීලකයින්ට ගිණුමක් සෑදීමට ඉඩ සලස්වමු.

View orders/views.py
from django.shortcuts import render, redirect
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth import login

def signup_view(request):
    if request.method == 'POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            user = form.save()
            login(request, user) # ගිණුම සෑදූ සැනින් login කරවීම
            return redirect('home') # Home පිටුවට යොමු කිරීම
    else:
        form = UserCreationForm()
    return render(request, 'signup.html', {'form': form})
Template templates/signup.html
<h2>Sign Up</h2>
<form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">Sign Up</button>
</form>

{% csrf_token %} යනු ආරක්ෂාව සඳහා Django විසින් යොදන අනිවාර්ය tag එකකි.

URL pizzaproject/urls.py
from orders import views as orders_views
from django.urls import path

urlpatterns = [
    # ...වෙනත් urls...
    path('signup/', orders_views.signup_view, name='signup'),
]

Login ක්‍රියාවලිය මීටත් වඩා පහසුය, കാരണം Django විසින්ම LoginView නමින් සූදානම් view එකක් අපට ලබා දෙයි.

Template templates/login.html
<h2>Log In</h2>
<form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">Log In</button>
</form>
URL pizzaproject/urls.py
from django.contrib.auth import views as auth_views

urlpatterns = [
    # ...වෙනත් urls...
    path('login/', auth_views.LoginView.as_view(template_name='login.html'), name='login'),
]
Settings pizzaproject/settings.py

සාර්ථකව login වූ පසු පරිශීලකයා යොමු කළ යුතු පිටුව කුමක්දැයි Django වෙත දැනුම් දීමට, settings.py ගොනුවේ පහළටම මෙම පේළිය එක් කරන්න.

LOGIN_REDIRECT_URL = '/' # සාර්ථක login එකකින් පසු home page එකට යොමු කරන්න

Logout ක්‍රියාවලිය සඳහා ඇත්තේ එක් පියවරක් පමණි. ඒ URL එක සැකසීමයි. Django හි LogoutView එකට template එකක් අවශ්‍ය නොවේ.

URL pizzaproject/urls.py
urlpatterns = [
    # ...වෙනත් urls...
    path('logout/', auth_views.LogoutView.as_view(), name='logout'),
]
Settings pizzaproject/settings.py

Logout වූ පසු යොමු කළ යුතු පිටුව settings.py හි සඳහන් කළ හැක.

LOGOUT_REDIRECT_URL = '/login/' # Logout වූ පසු login පිටුවට යොමු කරන්න