تغییر پسورد

جنگو

سلام

این حالت برای کاربری است که از قبل وارد سیستم شده و حالا می خواهد پسورد خود را عوض کند. برای این کار به سه فیلد احتیاج است. پسورد قبلی، پسورد جدید و تأیید پسورد جدید.

خوب در گام اول URL را اضافه می کنیم.

myproject/urls.py

این فرم ها فقط برای کاربرانی کار می کند که به سیستم وارد شده باشند. استفاده از این ویوها فقط برای login_required@ امکان پذیر است. اگر کاربری به سیستم وارد نشده باشد و بخواهد وارد این صفحه شود؛ جنگو او را به صفحۀ ورود یا همان لاگین انتقال می دهد.

پس باید آدرس صفحۀ لاگین را به جنگو معرفی کنیم.

myproject/settings.py

قالب مربوط به صفحۀ تغییر پسورد را ایجاد می کنم.

templates/password_change.html

یک نکته ای را تکرار کنم. در صفحۀ قالب هیچ کد یا فیلدی وجود ندارد که مربوط به تغییر پسورد باشد اما بعد از ایجاد چند تگ مربوط به طراحی می بینیم که فیلدها به درستی در صفحه ایجاد شده اند. علت آن ساده است. اگر دقت شود در فایل مربوط به URL  ما به جنگو گفته ایم که:

این یعنی اینکه ویوی پیش فرض تغییر پسورد در جنگو را به آدرس قالب password_change.html بفرست.

و حالا هم تأیید تغییر پسورد و قالب آن

templates/password_change_done.html

حالا می خواهیم فایل تستی را برای نمونه‌های آزمایشی ایجاد کنیم. یک فایل جدید به نام test_view_password_change.py می سازیم.

به دلیل اینکه نمونه های تستی خیلی طولانی است در این قسمت ذکر نشده است و برای مشاهدۀ آن می توانید روی لینک کلیک کنید.

accounts/tests/test_view_password_change.py (مشاهده کد کامل)

صفحۀ بالا با این سناریو ساخته شده است که کاربر هنوز وارد سیستم نشده و قصد ورود به صفحۀ تغییر پسورد را دارد و به همین دلیل به صفحۀ لاگین ریدایرکت می شود.

accounts/tests/test_view_password_change.py (مشاهده کد کامل)

کلاس PasswordChangeTestCase یک کاربر جدید را به صورت موقت ایجاد می‌کند و یک درخواست POST  به ویوی password_change ارسال می کند. در ادامه قرار است به جای استفاده از کلاس TestCase  از این کلاس استفاده کنیم.

accounts/tests/test_view_password_change.py (مشاهده کد کامل)

با استفاده از تابع ()refresh_from_db مطمئن می شویم که آخرین وضعیت دیتا را استفاده می کنیم. این تابع، جنگو را مجبور می کند تا درخواست جدیدی را به دیتابیس ارسال و داده ها را به روز کند. مجبوریم از این تابع استفاده کنیم چراکه قرار است change_password پسوردها را در دیتابیس تغییر دهد و بنابراین برای اینکه مطمئن شویم پسورد عوض شده چاره ای نداریم جز آنکه به دیتا بیس وصل شویم، آخرین داده ها را بررسی کنیم و آن را با پسورد جدید خود مقایسه کنیم.

و در پایان آدرس کدهای مربوط به بخش اعتبارسنجی:

http://tamadon.net/python/code/493-django-beginners-guide-part5.zip

ترجمۀ اختصاصی توسط تمدن

 

مطلب بعدی:فصل بعدی: مقدمه و مفهوم ORM

مطلب قبلی: ویوی تکمیل بازیابی پسورد

 

بدون دیدگاه

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

جنگو
پیکربندی گواهینامۀ https

سلام حالا می خواهیم برنامۀ خودمان را با گواهینامۀ https امن کنیم. ساده ترین کار برای انجام آن Let’s Encrypt است. قبل از Let’s Encrypt هرگز تنظیمات https به این راحتی نبوده و مهمتر اینکه اینکار کاملاً رایگان است. آن ها راه حلی به نام certbot را ارائه داده اند …

جنگو
پیکربندی سرویس ایمیل

سلام یکی از بهتر سرویس دهنده های ایمیل Mailgun با قابلیت ۱۲ هزار ایمیل رایگان در ماه است. به صورت رایگان ثبت نام کنید. برای اینکار باید آن را با سرویس دهندۀ دامین خود تنظیم کنید که در این آموزش از tamadon.org استفاده شده است. حالا اولین رکورد DNS را …

جنگو
پیکربندی NGINX

سلام کار بعدی که قرار است انجام شود؛ تنظیمان Nginx به شکلی است که پاسخگویی و سرویس دهی مربوط به فایل های استاتیک را خود انجام دهد و سایر درخواست ها را به Gunicorn بفرستد. یک فایل پیکربندی با نام boards را درون /etc/nginx/sites-available/ و با محتوای زیر اضافه می …

هرگونه استفادۀ از این آموزش به صورت رایگان و با ارجاع به تمدن جایز است.