یکی از قابلیت‌های اصلی هر وب‌سایت یا برنامه کاربردی، سیستم مدیریت کاربران است. جنگو، با ارائه ابزارها و کتابخانه‌های داخلی مانند django.contrib.auth، ساخت سیستم ورود و خروج کاربران در جنگو را بسیار ساده کرده است. در این مقاله، به ساخت یک سیستم ورود و خروج کاربران در جنگو به صورت گام‌ به‌ گام می‌پردازیم.

مرحله 1: ایجاد پروژه و اپلیکیشن جدید

ابتدا یک پروژه و اپلیکیشن جدید ایجاد کنید:

django-admin startproject user_management
cd user_management
python manage.py startapp accounts

مرحله 2: افزودن اپلیکیشن به تنظیمات پروژه

اپلیکیشن جدید را به فایل settings.py اضافه کنید:

INSTALLED_APPS = [
...,
'accounts',
'django.contrib.auth', # برای مدیریت کاربران
'django.contrib.sessions', # مدیریت نشست‌ها
]

آموزش مبحث احراز هویت (ثبت نام / ورود / خروج ) در دوره جامع آموزش جنگو رایگان تدریس شده است 👇

آموزش جنگو (17 ساعت ویدیو آموزشی رایگان)

مرحله 3: ساخت فرم ورود

در اپلیکیشن accounts، یک فایل به نام forms.py ایجاد کنید:

from django import forms
from django.contrib.auth.forms import AuthenticationForm
class CustomLoginForm(AuthenticationForm):
username = forms.CharField(max_length=150, label=‘نام کاربری’, widget=forms.TextInput(attrs={
‘class’: ‘form-control’,
‘placeholder’: ‘نام کاربری’
}))
password = forms.CharField(label=‘رمز عبور’, widget=forms.PasswordInput(attrs={
‘class’: ‘form-control’,
‘placeholder’: ‘رمز عبور’
}))

مرحله 4: ساخت ویو ورود و خروج

در فایل views.py اپلیکیشن، ویوهای ورود و خروج را تعریف کنید:

from django.contrib.auth.views import LoginView, LogoutView
from django.urls import reverse_lazy
class CustomLoginView(LoginView):
template_name = ‘accounts/login.html’
form_class = CustomLoginForm

class CustomLogoutView(LogoutView):
next_page = reverse_lazy(‘login’) # بازگشت به صفحه ورود بعد از خروج

مرحله 5: ساخت قالب‌های HTML

در پوشه templates/accounts/ دو فایل login.html و logout.html ایجاد کنید.

login.html:

<!DOCTYPE html>
<html lang="en">
<head>
<title>ورود کاربران</title>
</head>
<body>
<h1>ورود</h1>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">ورود</button>
</form>
</body>
</html>

logout.html:

<!DOCTYPE html>
<html lang="en">
<head>
<title>خروج کاربران</title>
</head>
<body>
<h1>شما خارج شدید</h1>
<a href="{% url 'login' %}">بازگشت به صفحه ورود</a>
</body>
</html>

مرحله 6: تنظیم مسیرها (URLs)

در فایل urls.py اپلیکیشن، مسیرها را تعریف کنید:

from django.urls import path
from .views import CustomLoginView, CustomLogoutView
urlpatterns = [
path(‘login/’, CustomLoginView.as_view(), name=‘login’),
path(‘logout/’, CustomLogoutView.as_view(), name=‘logout’),
]

سپس این مسیرها را در urls.py اصلی پروژه اضافه کنید:

from django.urls import include, path

urlpatterns = [
…,
path(‘accounts/’, include(‘accounts.urls’)),
]

مرحله 7: محدود کردن دسترسی با استفاده از لاگین

برای محدود کردن دسترسی به صفحات خاص، از @login_required استفاده کنید:

from django.contrib.auth.decorators import login_required

@login_required
def dashboard(request):
return render(request, ‘dashboard.html’)

مرحله 8: اجرای پروژه

پایگاه داده را مهاجرت دهید و سرور را اجرا کنید:

python manage.py migrate
python manage.py runserver

به آدرس http://localhost:8000/accounts/login/ بروید و فرم ورود را مشاهده کنید.

نتیجه‌ گیری

ساخت سیستم ورود و خروج کاربران در جنگو با استفاده از ابزارهای داخلی بسیار ساده است. با تنظیم دقیق فرم‌ها، ویوها و قالب‌ها، می‌توانید یک سیستم امن و کاربرپسند ایجاد کنید.

آموزش جنگو در کانال یوتیوب کدیتی