ایجاد لاگین پیج با جنگو

ایجاد لاگین پیج با جنگو

بدون ديدگاه

ایجاد لاگین پیج با جنگو

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

تو مقاله قبلی با فریمورک جنگو، معماری اون و سری ویژگی های مثبت اون آشنا شدیم.

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

نصب جنگو

قبل از شروع کار نیازه که ما ماژول جنگو رو دانلود کنیم تا بتونیم از اون استفاده کنیم.

برای این کار میتونید کد زیر رو در ترمینال یا cmd خودتون وارد کنید تا ماژول جنگو برای شما نصب بشه( فرض می کنیم که قبلا پایتون و pip رو روی سیستمتون نصب دارید) :

pip install django

برای اینکه از نصب جنگو اطمینان حاصل کنید، میتونید با تایپ کردن python وارد محیط تعاملی پایتون بشید و بعد دستورهای زیر رو وارد کنید :

Import django

django.getversion()

اگر جنگو با موفقیت نصب شده باشه، این دستور نسخه جنگو نصب شده شما رو نمایش میده.


ساخت پروژه جنگو

خب حالا که ما جنگو رو روی سیستم داریم، میریم تا یه پروژه باهاش ایجاد کنیم.

برای ایجاد پروژه اول به دایرکتوری مورد نظر که میخواید پوشه پروژه تون اونجا ایجاد بشه برید و بعد با استفاده از دستور زیر یک پروژه جنگو رو ایجاد کنید:

Django-admin startproject myproject

با این دستور یه پوشه با نام myproject ساخته میشه که داخلش یه فایل با نام manage.py برای مدیریت پروژه داره

و یه پوشه دیگه هم نام پروژه ایجاد میشه که حاوی فایل های پروژه هستش.

ساخت اپ جنگو

هر پروژه جنگو میتونه از چند تا app تشکیل بشه که هر کدوم وظایف خاص خودشونو دارند.

اینجا شما میتونید با دستور cd myproject وارد پوشه پروژه بشید و با دستور زیر یک app برای پروژه ایجادکنید :

Python manage.py startapp loginapp

این دستور یک پوشه با نام loginapp برای ما ایجاد میکنه که مربوط به اپ ما هستش و فایل های مربوط به اپ در داخل اون قرار دارن.
تو این قسمت ما میایم 

در داخل پوشه اصلی پروژه یک پوشه با نام templates برای قالب ها و یک پوشه با نام static برای قرار گرفتن فایل های استاتیک مثل فایل های css ایجاد می کنیم.

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

ایجاد لاگین پیج با جنگو

ساخت کاربر

خب حالا میتونیم یک یا چند کاربر برای پروژه مون بسازیم و یه لاگین پیج برای اون ها ایجاد کنیم.

برای ساخت کاربر تو جنگو دو روش وجود داره.

روش اول اینه که با دستور manage.py createsuperuser یه سوپریوزر بسازید

و بعد بعد سرور جنگو رو با دستور manage.py runserver ران کنید

و به صفحه ادمین برید(http://127.0.0.1:8000/admin ). در قسمت groups یک گروه برای کاربران ایجاد کنید و

از قسمت users نام کاربری و پسورد user رو وارد کنید و اون رو سیو کنید.

روش دوم اینه که با استفاده از دستور python manage.py shell صفحه تعاملی shell رو بالا بیارید

و با استفاده از کدهای زیر یه کاربر ایجاد کنید :

 

from django.contrib.auth.models import User

#Create user and save to the database
user = User.objects.creat_user('myusername', 'myemail@eeeemail.com', 'mypassword')

#Update fields and then save again
user.first_name = 'ali'
user.last_name = 'alizade'
user.save()

با استفاده از این دو روش میتونید هر تعداد کاربر که خواستید رو اضافه کنید.

اضافه کردن url

خب بعد از این میریم به سراغ url ها تا url مربوط به سیستم login رو به اون اضافه کنیم. تو داخل پوشه پروژه (myproject) فایل urls.py رو باز می کنیم و کدهای زیر رو به اون اضافه می کنیم :

 

urlpatterns += [

path('users/',include('django.contrib.auth.urls')),
]

فریمورک جنگو یک سیستم authentication برای ورود و خروج کاربران داره که انجام کارهای مربوط به login و logout کاربران رو خیلی ساده تر میکنه. سیستم authentications یه سری view و url رو به صورت پیش فرض داره و شما به راحتی میتونید با تعریف template مربوطه از اونا استفاده کنید . برای اینکه این url ها رو ببنید میتونید با دستور python manage.py runserver سرور جنگو رو ران کنید و به ادرس http://127.0.0.1:8000/users/ برید.

ساخت قالب ها

همونطور که تو عکس هم میبینید

جنگو به طور پیش فرض url ها و view های مربوط به login ، logout ، password change ، password reset رو داره و شما برای استفاده از اونها فقط نیاز دارید که template های مربوط به اونها رو ایجاد کنید.
برای ساخت template مربوط به صفحه لاگین اول به پوشه templates که قبلا ایجاد کرده بودیم میریم

و یک پوشه با نام registration ایجاد می کنیم. بعد از اون template مربوط به صفحه لاگین رو با نام login.html داخل اون ایجاد می کنیم

و کدهای زیر رو به اون اضافه می کنیم :

 

{% block content %}
{% if form.errors %}
your username and password didn't match. please try again .
{% endif %}

{% if next %}
{% if user.is_authenticated %}
your account doesn't have access to this page. To proceed, please login with an account that has access .

{% else %}
please login to see this page.
{% endif %}
{% endif %}

{% csrf_token %}

{{ form.username.lable_tag}}{{ form.username }}
{{ form.password.lable_tag }}{{ form.password }}


{# Assumes you step the password_reset view in your URLconf #}

Lost password ?

{% endblock %}

بعد از اضافه کردن این template میریم سراغ فایل settings.py در داخل پوشه پروژه

و آدرس مربوط به این template رو به اون اضافه می کنیم

تا جنگو بتونه به این فایل دسترسی داشته باشه.

در داخل فایل settings.py و در قسمت TEMPLATES قسمت DIRS رو به شکل زیر تغییر میدیم :

 

TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': ['./templates'],
'APP_DIRS': True,
'OPTIONS': {

خب حالا میتونیم به آدرس http://127.0.0.1:8000/users/login/ بریم و صفحه لاگین ساده رو ببینیم. اگه قبلا کاربری اضافه کرده باشید تو این صفحه میتونید مشخصاتشو وارد کنید و لاگین کنید. اگه این کارو بکنید جنگو شما رو به یه صفحه با آدرس http://127.0.0.1:8000/accounts/profile/ هدایت میکنه و چون هنوز قالبی برای این صفحه تعریف نشده پیام page not found به شما نشون داده میشه. اگر بخواید بعد از ورود به صفحه دیگه ای هدایت بشید میتونید در فایل settings.py یک متغیر به صورت زیر اضافه کنید :

 

LOGIN_REDIRECT_URL = '/mainpage'

در اینجا اگر شما url ای با آدرس mainpage داشته باشید،

کاربر شما بعد از ورود به این صفحه هدایت میشه

( http://127.0.0.1:8000/mainpage) . از اونجایی ما هنوز همچین url ی رو تعریف نکردیم، میریم تا url و template مربوط به اون رو اضافه کنیم.
برای اضافه کردن فایل template مربوط به صفحه mainpage، داخل پوشه templates یک فایل با نام mainpage.html ایجاد می کنیم

که مربوط به صفحه اصلی ما هستش. داخل این فایل کدهای زیر رو اضافه می کنیم :

 

#mainpage.html

{% if user.is_authenticated %}
HI {{ user.username }}!
{% else %}

You are not logged in

login
{% endif %}

کد بالا میگه که اگه کاربر وارد شده بود، عبارت ” نام کاربر + Hi ” رو چاپ کن

و در غیر این صورت عبارت ” شما وارد نشده اید ” رو چاپ کن

و لینک مربوط به صفحه لاگین رو به اون نشون بده.
بعد از تعریف قالب، url مربوط به این صفحه رو هم به به فایل urls.py اضافه می کنیم :

 

from django.views.generic.base import TemplateView

urlpatterns += [

path('mainpage/', TemplateView.as_view(template_name='mainpage.html'), name='mainpage'),
]

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

برای مطالعه مقالات بیشتر در زمینه پایتون کلیک کنید.

منبع خارجی در زمینه پایتون

 

نوشتن دیدگاه

نشانی ایمیل شما منتشر نخواهد شد.