احراز هویت در Django
در این آموزش قرار است در framework پایتون یعنی django ، نشان دهیم که چگونه login و logout را انجام دهید. ما در اینجا با پایتون ۲.۷ و django 1.9 کار خواهیم کرد.
برای نصب django میتوانید از دستور زیر استفاده کنید :
pip install Django==1.9
ایجاد پروژه
برای شروع کار دستورهای زیر را وارد کنید:
django-admin startproject zerotohero cd zerotohero python manage.py startapp mysite python manage.py migrate
به طور خلاصه این چهار دستور، پروژهی django به نامِ zerotohero میسازد، وارد مسیر پروژه میشود، app جدید به نام mysite و پایگاه داده SQLite به نامِ db.sqlite3 میسازد.
همچنین mysite خود را در فایل zetrotohero/setting.py به صورت زیر شامل کنید:
INSTALLED_APPS = [ 'mysite', 'django.contrib.admin', 'django.contrib.auth', ... ]
مسیری به نام templates در برنامه mysite خود ایجاد کنید و در داخل آن دو مسیر به نام های registration و mysite درست کنید.
حال ساختار پروژه باید به شکل زیر باشد :
|-- db.sqlite3 |-- manage.py |-- mysite | |-- admin.py | |-- apps.py | |-- __init__.py | |-- migrations | | `-- __init__.py | |-- models.py | |-- templates | | |-- mysite | | `-- registration | |-- tests.py | `-- views.py `-- zerotohero |-- __init__.py |-- settings.py |-- urls.py `-- wsgi.py
همچنین ما نیاز داریم که کاربران سایت ما را تست کنند. شما میتوانید با ساختن superuser این کار را انجام دهید :
python manage.py createsuperuser
نگران نباشید، شما میتوانید با ساختن userهای معمولی از پنل admin هم این کار را انجام دهید.
بررسی login
طبق documentation، جنگو viewهایی برای احراز حویتِ login، logout و بازیابی رمز عبور دارد. وجود این viewها موجب این میشود که خودمان view ننویسیم. پس قدم بعدی این است که این viewها را در پروژه خود شامل کنیم:
from django.contrib.auth import views as auth_views
ما قصد داریم که وقتی کاربر به login/ میرود، صفحه login باز شود. پس باید آن را در فایل zerotohero/urls.py اضافه کنیم:
url(r'^login/$', auth_views.login),
حال باید صفحه login.html خود را در مسیر registration درست کنیم:
<!DOCTYPE html> <html> <head> <title>Login</title> </head> <body> <form method="POST"> {% csrf_token %} <p> <label>Username</label> <input type="text" name="username"> </p> <p> <label>Password</label> <input type="password" name="password"> </p> <button type="submit">Login</button> </form> </body> </html>
اگر نمیخواهید از این قالب استفاده کنید، میتوانید قالب خود را به طور مثال با نام template_name بسازید و در فایل mysite/urls.py شامل کنید:
url(r'^login/$', auth_views.login, {'template_name': 'mysite/login_user.html'})
وقتی که کاربر روی دکمه submit کلیک میکند، login view عمل ورود را برای ما رسیدگی میکند. بعد از اینکه کاربر وارد شد، میتوانیم مشخص کنیم که به کجا هدایت شود که با اضافه کردن LOGIN_REDIRECT_URL در فایل zerotohero/setting.py مشخص میکنیم:
LOGIN_REDIRECT_URL = '/'
حال سرور را راه اندازی میکنیم :
python manage.py runserver
و به مسیر localhost:8000/login میرویم. اگر ورود موفقیت آمیز بود که به / هدایت میشوید، در غیر این صورت به /login هدایت میشوید.
بررسی logout
در گام بعدی کاربر باید بتواند با رفتن به logout/ از حساب خود خارج شود. با توسعه دادن روند login، میتوان logout را هم ساخت. پس باید view آن را به فایل zerotohero/setting.py اضافه کنیم:
url(r'^logout/$', auth_views.logout)
حالا میتوانیم فایل registration/logged_out.html خود را بسازیم:
<!DOCTYPE html> <html> <head> <title></title> </head> <body> You have successfully logged out. <a href="/">Home</a> </body> </html>
و همچنین مانند login میتوانید خودتان قالب تعریف کنید و در mysite/urls.py شامل کنید.
این آموزش برای احراز هویت ساده بوده است. ولی اگر میخواهید که سطح کار خود را بالاتر ببرید میتوانید از این لینک قوانین regex پایتون را یاد بگیرید و بر روی پروژه خود اعمال کنید. همچنین میتوانید در صفحاتی که میسازید از جاوااسکریپت استفاده کرده و قوانین را اعمال کنید، که از این لینک میتوانید framework های معروف اعتبار سنجی را ببینید. اگر هم خواستید که دستی تمام محدودیتها را با جاوااسکریپت اعمال کنید، میتوانید با Regular Expression در جاوااسکریپت این کار را انجام دهید.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.