آموزش ساخت فروشگاه اینترنتی با جنگو
آموزش ساخت فروشگاه اینترنتی با جنگو
برای آن که بتوانید به ساخت فروشگاه اینترنتی با جنگو بپردازید ابتدا باید در رابطه با پایتون و جنگو و آموزش طراحی سایت اطلاعات مختصری به دست آورده و با فریمورک Django نیز آشنا شوید.
جنگو یک چارچوب وب پایتون سطح بالا است که امکان توسعه سریع وب سایتهای امن و قابل نگهداری را فراهم میکند. این برنامه رایگان و منبع باز است، دارای یک جامعه پر رونق و فعال، مستندات عالی و گزینههای زیادی برای پشتیبانی رایگان و پولی است.
فریم ورک Django
از آنجا که در فریمورک جنگو هر آنچه شما نیاز دارید بخشی از یک “محصول” محسوب میشود، همه بخشها بصورت یکپارچه با هم کار میکنند، از اصول طراحی وب سایت سازگار پیروی میکنند و مستندات گسترده و به روز خود را شامل میشوند.
جنگو یک فریمورک همه جانبه است که از آن برای ساخت تقریباً هر نوع وب سایتی – از سیستمهای مدیریت محتوا و ویکیها گرفته تا شبکههای اجتماعی و سایتهای خبری استفاده میشود.
این برنامه میتواند با هر چارچوب سمت مشتری کار کند و میتواند تقریباً در هر قالب (از جمله HTML ،RSS ،JSON ،XML و غیره) محتوایی را ارائه دهد. از همینرو قصد داریم در ادامه مقاله شما را با روش ساخت فروشگاه اینترنتی با جنگو آشنا کنیم.
پیاده سازی قالب جنگو
از نظر داخلی، جنگو تقریباً برای هر عملکردی که بخواهید گزینههایی را فراهم نموده است. (به عنوان مثال چندین پایگاه داده معروف، موتورهای templating و غیره)
SecureDjango با تهیه یک چارچوب به توسعهدهندگان کمک میکند تا از بسیاری از اشتباهات امنیتی رایج جلوگیری کنند.
پیادهسازی قالب جنگو با هدف “انجام کارهای صحیح” مهندسی شده است تا از وب سایت به طور خودکار محافظت کند. به عنوان مثال، جنگو یک روش ایمن برای مدیریت حسابهای کاربری و گذرواژههای شما فراهم میکند، از اشتباهات رایج مانند قرار دادن اطلاعات جلسه در کوکیها جلوگیری میکند و حتی به ذخیره مستقیم رمزهای عبور به جای هش رمز عبور میپردازد.
برنامه نویسان با ارائه پشتیبانی مناسب از کراس پلتفرم، طراحی موتور الگوی جنگو را از پایتون به زبان های دیگر منتقل کردهاند. برخی از این گزینهها پورتهای مستقیمتری هستند. زبانهایی که در ادامه نام میبریم، اگرچه از جنگو الهام گرفته و مفاهیم آن را حفظ میکنند، اما این آزادی را دارند که از طراحی جنگو منحرف شوند:
- Liquid for Ruby
- Template:Swig for Perl
- Twig for PHP and JavaScript
- Jinja for Python
- ErlyDTL for Erlang
برای ساخت فروشگاه اینترنتی با جنگو باید به پیاده سازی قالب مناسب پرداخته و گام به گام مراحل ساخت آن را پیش ببرید. در ادامه به ارائه توضییحاتی در رابطه با این مراحل و گامها میپردازیم؛
Django توسط بسیاری از ارائهدهندگان خدمات میزبانی وب، که اغلب زیرساختهای خاص و مستندات میزبانی سایتهای جنگو را دارند، پشتیبانی میشود.
راه اندازی درگاه پرداخت اینترنتی
با وجود پیشرفت تکنولوژی و اینترنتی شدن کسب و کارها میزان انجام تراکنشهای مالی به صورت اینترنتی نیز زیاد میشود. بنابراین وب سایتهای مختلف برای ارائه خدمات خود به درگاه های پرداخت آنلاین نیاز پیدا میکنند.
حتی خیلی از کسب و کارهای نوپا برای شروع فعالیت خود این دغدغه را دارند که آیا میتوان از همان ابتدای کار برای دریافت درگاه پرداخت اینترنتی اقدام نمود یا خیر؟ خیلی از افراد فکر میکنند تا مجوز کار نداشته باشند امکان دریافت درگاه پرداخت آنلاین از بانک را نیز ندارند اما این گونه نیست.
چگونه برای سایتمان درگاه پرداخت آنلاین بگیریم؟
پس از ساخت فروشگاه اینترنتی با جنگو برای راه اندازی کسب و کار اینترنتی اصلا نیازی نیست به بانک مراجعه کنید. به راحتی با روش دوم میتوانید در کمتر از چند ساعت برای سایت خود درگاه پرداخت آنلاین دریافت نمایید؛
درگاه پرداخت مستقیم
درگاههای پرداخت مستقیم معمولاً برای سایتها و کسب و کارهای بزرگ با گردش مالی زیاد مناسب هستند. برای مثال سایت دیجی کالا که روزانه فروش بسیار زیادی دارد و پرداختهای زیادی را شاهد است از درگاه پرداخت مستقیم استفاده میکند.
برای دریافت درگاه پرداخت مستقیم قبل از هر چیز باید نماد اعتماد الکترونیکی بگیرید و با مدارک مورد نیاز به بانک مراجعه کنید. دریافت نماد اعتماد الکترونیکی نیز پروسه مخصوص به خود را دارد و کمی زمان بر است.
احتمالا حدود سه ماه طول میکشد تا تمام مراحل را طی کنید و از طرفی برای دریافت این نماد نیاز به مجوزها و مدارک مورد نیاز برای کسب و کار خود خواهید داشت.
یکی دیگر از دردسرهای دریافت این درگاه این است که خودتان نمیتوانید آن را روی سایت فعال کنید و حتماً باید از یک برنامه نویس درخواست طراحی ماژول مورد نظر را نمایید.
پس با توجه به مراحل زیاد این روش ما آن را به شما پیشنهاد نمیکنیم. تنها مزیت درگاه های پرداخت مستقیم این است که در ازای پرداختها کارمزد از شما دریافت نمیشود و همچنین مبالغ پرداختی در عرض چند ساعت به حسابتان واریز خواهد شد.
درگاه پرداخت واسط
روش بعدی دریافت درگاه پرداخت واسط است که شما عزیزان میتوانید پس از ساخت فروشگاه اینترنتی با جنگو مراحل دریافت را طی نمایید و به آسانی اتصال بین سایت خود و درگاه پرداخت را برقرار نمایید.
اکثر سایتهای داخلی از این روش برای دریافت نمودن درگاه پرداخت آنلاین استفاده مینمایند. بدین منظور به راحتی میتوان از سایتهای ارائه دهنده این خدمات درگاه پرداخت دریافت نمود و اصلاً نیاز به مراجعه حضوری به بانک نیز نمیباشد.
نحوه عملکرد این سایت ها کاملاً قانونی است و با کارت ملی یا شناسنامه مراحل احراز هویت به انجام میرسد، ابتدا باید مدارک خود را برای سایت مورد نظر ارسال کنید و برای این کار به راحتی میتوان از کارت ملی یا شناسنامه با گوشی موبایل عکس گرفت.
سپس باید شماره حساب و شماره کارت خود را ثبت نموده و آدرس خود را نیز ثبت کنید تا از طرف پشتیبانی بررسی شود. در صورت مناسب بودن محتوای سایت درگاه در عرض چند ساعت برای شما فعال میشود.
پس از فعال شدن درگاه پرداخت آنلاین باید آن را به سایت خود متصل کنید، اگر از ووکامرس استفاده میکنید میتوانید افزونه مربوط به ووکامرس را دانلود کنید و روی سایت خود نصب کنید.
کانفیگ پکیج django-allauth
پس از نصب افزونه به قسمت تنظیمات ووکامرس بروید و در تنظیمات به قسمت پرداخت بروید و نام درگاه پرداختی که افزونه اش را روی سایت خود نصب کرده اید ببینید. حال روی نام درگاه پرداخت مورد نظر کلیک نموده و آن را فعال کنید.
در ادامه به api بروید و کد دریافت شده از سایت مورد نظری که از آن درگاه پرداخت گرفتهاید و به سایت شما اختصاص داده شده است را در آن جا وارد کنید تا اتصال بین سایت شما و درگاه پرداخت انجام شود.
درگاه پرداخت واسط معمولاً شامل کارمزد میباشد که بابت هر پرداخت از مبلغ شما کسر میشود. شما میتوانید این مبلغ را به عهده خریدار گذاشته یا از مبلغی که به حساب خودتان واریز میشود کسر کنید.
در صورتی که پرداخت صورتحساب از طریق ارسال پایا به انجام برسد بین ۶ تا ۸ ساعت در وقت اداری زمان نیاز است تا مبلغ به حساب شما واریز شود اما در عوض این شرایط شامل کسر کارمزد نمیشود.
از مزیتهای درگاه پرداختهای واسط این است که شما توسط آنها میتوانید محصولاتی که در شبکههای اجتماعی مثل اینستاگرام یا تلگرام ارائه میدهید را نیز بفروشید.
تنظیم و پیکربندی Django-allauth
ثبت نام کاربر یکی از مهمترین قسمتهای یک برنامه وب است. django-registration-redux و django-alluth معروفترین برنامههای ثبت نام موجود در جنگو هستند.
این مجموعه از آموزش جنگو با تنظیم پیکربندی و سفارشی سازی django-allauth سروکار دارد و به عنوان راهنما برای کاربران جدیدی که میخواهند به سرعت با آلاوت شروع به کار کنند و بدون دردسر در طول مسیر، تنظیمات مفیدی را انجام دهند، تدارک دیده شده است.
این مقاله تنظیمات و برخی تنظیمات اساسی را پوشش میدهد. برای ساخت فروشگاه اینترنتی با جنگو باید با نحوه پیکربندی این ویژگی آشنایی داشته باشید. بعداً، ما با ورود به سیستم اجتماعی، گسترش کلاسها و استفاده کارآمد از DefaultAccountAdapter برای افزودن فرآیند سفارشی، مقابله خواهیم کرد.
این موضوع میتواند برای یک تازه کار جنگو یا یک کاربر جدید django-allauth کمی دشوار باشد. اگرچه مستندات خوبی دارد، اما به دلیل محدودیتهای زمانی و منابع توسعهدهندگان درگیر، مقالات و آموزشهای عمیق زیادی در مورد کتابخانه وجود ندارد.
بنابراین مکتبخونه تلاش میکند تا این مشکل را حل کند و یک مجموعه راهنمای جامع را برای استفاده و کار با django-allauth به صورت آسان برای انجمن django-community ایجاد کند.
راه اندازی
- برای شروع کار میتوانید فایلهای مورد استفاده در آموزش را بارگیری کنید. مراحل زیر شما را از طریق راه اندازی راهنمایی میکند.
- اگر از قبل پروژه Django را ندارید، ایجاد کنید.
- برای نصب allauth django از فرمان pip install django-allauth استفاده کنید.
- allauth, allauth.account و همه ورودهای اجتماعی لازم را به INSTALLED_APPS اضافه کنید.
- بعد از پیکربندی، برنامههای نصب شده باید مانند موارد زیر باشند؛
INSTALLED_APPS = [ 'django.contrib.admin', 'allauth', 'allauth.account', 'allauth.socialaccount', 'allauth.socialaccount.providers.google', 'allauth.socialaccount.providers.facebook', 'django.contrib.auth', 'django.contrib.sites', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ]
تنظیمات پردازشگر الگو را در settings.py پیکربندی کنید و همچنین الگوی URL را در urls.py پروژه اضافه کنید؛
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [ os.path.normpath(os.path.join(BASE_DIR, 'templates')), ], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', 'django.template.context_processors.request', ], }, }, ]
تأیید اعتبار زیر را اضافه کنید؛
AUTHENTICATION_BACKENDS = ( 'django.contrib.auth.backends.ModelBackend', 'allauth.account.auth_backends.AuthenticationBackend', )
پروندههای الگو را از مخزن django-allauth یا مخزن سفارشی خود کپی و آنها را در پوشه الگوها در فهرست پروژه خود جای گذاری کنید. آدرسهای allauth را در urls.py به فهرست اصلی پروژه خود اضافه کنید . پس از افزودن آدرسهای allauth، کدها باید به صورت زیر باشند؛
from django.contrib import admin from django.urls import path from django.conf.urls import url, include urlpatterns = [ path('admin/', admin.site.urls), url(r'^accounts/', include('allauth.urls')), ]
همچنین می توانید CSS سفارشی را خود را اضافه کنید. میتوانید این کار را با ایجاد یک پوشه ثابت در پوشه پروژه و قرار دادن CSS در پوشه حساب انجام دهید؛
برای اجرای همه مهاجرتهای لازم، python manage.py makemigrations و python manage.py را اجرا کنید.
برای مثال
localhost: 8000 / Accounts / login برای نمایش صفحه ورود به سیستم است.
پیکربندی:
بیشتر ویژگی های django-allauth را میتوان با استفاده از آداپتورها و متغیرهای داخلی و قرار دادن آنها در settings.py پیکربندی کرد.
انقضا تأیید ایمیل:
تعداد روزهایی را که باید یک حساب فعال شود تنظیم میکند. به عنوان مثال:
ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS = 7
پست الکترونیکی برای فعال سازی:
این گزینه به شما امکان میدهد تعیین کنید که آیا آدرس ایمیل برای ثبت نام مورد نیاز است. False را تنظیم کنید تا نیاز نامه الکترونیکی غیرفعال شود.
به عنوان مثال
ACCOUNT_EMAIL_REQUIRED = True
تأیید نامه ایمیل:
از این گزینه میتوان برای تعیین اینکه آیا تأیید نامه ایمیل برای ورود کاربر پس از ثبت حساب لازم است استفاده کند.
برای مثال
ACCOUNT_EMAIL_VERIFICATION = "mandatory"
محدودیت تلاش برای ورود:
این یک ویژگی مهم است که می تواند برای جلوگیری از حملات بی رحمانه به ماژول ورود کاربر در برنامه استفاده شود. حداکثر تعداد تلاش برای ورود به سیستم را میتوان تنظیم کرد و ورود به سیستم کاربر تا زمان صرفه جویی شده مسدود میشود.
این ویژگی از تنظیم ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT استفاده می کند.
به عنوان مثال
ACCOUNT_LOGIN_ATTEMPTS_LIMIT = 5
ورود به سیستم محدودیت زمانی:
این تنظیم که باید با ACCOUNT_LOGIN_ATTEMPTS_LIMIT انجام میشود. مقدار تعیین شده در چند ثانیه از آخرین تلاش ناموفق برای ورود به سیستم است.
به عنوان مثال
ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT = 86400 # 1 day in seconds
ورود به سیستم و خروج از سیستم:
وقتی کاربر وارد سیستم میشود یا از سیستم خارج میشود، ممکن است بخواهید کاربر را به یک URL یا صفحه خاص هدایت کنید. از تنظیمات زیر میتوان برای تعیین آن مقادیر استفاده کرد.
به طور پیش فرض allauth تغییر مسیر ورود به سیستم / Accounts / Profile / URL و خروج از آن به localhost: 8000 یا هر صفحه اصلی localhost.
به عنوان مثال
ACCOUNT_LOGOUT_REDIRECT_URL = '/ LOGIN_REDIRECT_URL = '/accounts/email/'
سرانجام ، تنظیمات allauth شما باید شبیه تنظیمات زیر باشد؛
#django-allauth registraion settings ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS =1 ACCOUNT_EMAIL_REQUIRED = True ACCOUNT_EMAIL_VERIFICATION = "mandatory" ACCOUNT_LOGIN_ATTEMPTS_LIMIT = 5 # ۱ day ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT = 86400 #or any other page ACCOUNT_LOGOUT_REDIRECT_URL ='/accounts/login/' # redirects to profile page if not configured. LOGIN_REDIRECT_URL = '/accounts/email/'
PostgreSQL چیست
برای ساخت فروشگاه اینترنتی با جنگو باید با ویژگی PostgreSQL آشنایی داشته باشید. PostgreSQL دارای تعدادی ویژگی است که توسط سایر پایگاههای دادهای که جنگو پشتیبانی میکند به اشتراک گذاشته نمیشوند. این ماژول اختیاری شامل قسمتهای مدل و قسمتهای فرم برای تعدادی از دادههای خاص PostgreSQL است.
توجه داشته باشید جنگو یک چارچوب وب پایگاه داده-اگنوستیک است و خواهد بود. ما، کسانی را که مشغول نوشتن برنامههای قابل استفاده مجدد را برای انجمن جنگو میباشند تشویق میکنیم که به نوشتن کد پایگاه داده-اگنوستیک بپردازند.
با این حال، ما تشخیص میدهیم که پروژههای دنیای واقعی که با استفاده از جنگو نوشته شدهاند، نیازی به تجزیه و تحلیل پایگاه داده ندارند.
در حقیقت، به محض رسیدن یک پروژه به اندازه مشخص، ذخیره دادههای اساسی (که در حال حاضر یک چالش اساسی است و به احتمال زیاد به برخی از روشها برای کنترل اختلاف بین ذخیره داده ها نیاز دارد) به تغییر کد نیاز خواهند داشت.
جنگو تعدادی از انواع دادهها را پشتیبانی میکند که فقط با PostgreSQL کار میکنند. هیچ دلیلی اساسی وجود ندارد که (به عنوان مثال) ماژول contrib.mysql وجود نداشته باشد، جز این که PostgreSQL دارای غنیترین مجموعه ویژگی در پایگاه دادههای پشتیبانی شده است بنابراین کاربران آن بیشترین بهره را دارند.
ساخت Context Processor
معرفی پردازنده متن: همه ما میتوانیم توافق کنیم که در یک پروژه جنگو با request.user مواجه شدهایم و این یک پردازنده زمینه داخلی است. Context Processor تابعی است که آرگومان را میپذیرد و فرهنگ لغت را به عنوان خروجی باز میگرداند.
در مورد ما، فرهنگ لغت بازگشتی به عنوان زمینه اضافه میشود و بزرگترین مزیت این است که، می توان در تمام قالبها به آن دسترسی داشت، یعنی در سطح جهانی.
اگرچه دستیابی به این مسئله ممکن است خیلی پیچیده یا سخت به نظر برسد، اما در واقع اینطور نیست و اجرای آن بسیار ساده است. بنابراین، امروز ما به دنبال ایجاد یک پاورقی پویا با استفاده از Context Processor خواهیم بود – پاورقی که میتواند سال را به صورت پویا، بسیار راحت ارائه دهد. به این ترتیب شما مجبور نیستید هر ساله کد منبع خود را تغییر دهید.
من فرض می کنم شما یک پروژه جنگو و یک برنامه از قبل ساخته شده دارید. حتی میتوانید به ساخت فروشگاه اینترنتی با جنگو بپردازید.
ساخت یک پاورقی پویا با استفاده از پردازشگر زمینه
ابتدا باید فایلی با نامtext_processors.py ایجاد کنید. در اینجا کد زیر را اضافه خواهیم کرد؛
import datetime def get_current_year_to_context(request): current_datetime = datetime.datetime.now() return { 'current_year': current_datetime.year }
دوم، شما باید پردازشگر زمینه خود را در پرونده تنظیمات خود مشخص کنید؛
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', 'myapp.context_processors.get_current_year_to_context', # <-- Add your context processor ], }, }, ]
پردازشگر زمینه شما اکنون آماده استفاده در الگوهای شما است و با استفاده از کلیدی که “current_year” را تعیین کردیم، میتوان به آن دسترسی پیدا کرد. بنابراین، برای ایجاد یک قسمت پاورقی پویا، تمام کاری که باید انجام دهیم این است؛
Copyright {{ current_year }} - Heinek Halwin
حال پروژه خود را اجرا کنید. میبینید که اکنون year به عنوان سال جاری قابل مشاهده است.
برای ساخت فروشگاه اینترنتی با جنگو باید با گامها و نکات گفته شده در این مقاله آشنایی داشته باشید و سپس اقدام به تکمیل مراحل ساخت فروشگاه خود نمایید. امیدواریم مطالب ذکر شده برایتان مفید بوده باشد.