18- ساخت اپلیکیشنهای قابل استفاده مجدد در جنگو (صفحه ادمین):
۱۸ تیر ۱۴۰۴

0 دیدگاه
آموزش پیشرفته: ساخت اپلیکیشنهای قابل استفاده مجدد در جنگو
در این درس پیشرفته، یاد میگیریم چطور یک اپلیکیشن جنگو مثل اپلیکیشن polls را به یک بستهی پایتون مستقل تبدیل کنیم که بتوانیم در پروژههای جدید استفاده کنیم و آن را با دیگران به اشتراک بگذاریم.
اهمیت قابلیت استفاده مجدد در جنگو
ساخت و نگهداری یک برنامهی وب کار زمانبر و پرچالش است. بسیاری از پروژههای پایتون و جنگو با مشکلات مشابهی مواجه هستند.
چرا وقت خود را صرف تکرار کدها و راهحلها کنیم؟ مفهوم قابلیت استفاده مجدد (Reusability) در پایتون و جنگو باعث میشود کدها و اپلیکیشنها به شکلی طراحی شوند که در پروژههای مختلف قابل استفاده باشند.
مثلاً بستههایی مثل Django Packages و PyPI (مخزن بستههای پایتون) نمونههای زیادی از اپلیکیشنهای قابل استفاده مجدد دارند که میتوانید به راحتی در پروژههای خود استفاده کنید.
بسته پایتون (Package) و اپلیکیشن جنگو (App) چیست؟
بسته پایتون، مجموعهای از ماژولها (فایلهای پایتون) است که کد مرتبط را در یک ساختار سازماندهی شده جمعآوری میکند.
برای اینکه یک پوشه پایتون به عنوان بسته شناخته شود، باید شامل فایل
__init__.py
باشد.اپلیکیشن جنگو یک بسته پایتون است که مطابق قراردادهای جنگو طراحی شده (مثل داشتن فایلهای models.py, views.py, urls.py و غیره) و به راحتی در پروژههای جنگو قابل استفاده است.
ساختار پروژه و اپلیکیشن قابل استفاده مجدد
فرض کنید پروژهی ما ساختار زیر را دارد:
djangotutorial/
manage.py
mysite/
settings.py
urls.py
...
polls/
__init__.py
admin.py
apps.py
migrations/
models.py
static/
templates/
tests.py
urls.py
views.py
templates/
ما دایرکتوری polls/
را به گونهای ساختیم که شامل همه چیزهای مرتبط به اپلیکیشن باشد تا بتوانیم آن را به راحتی در پروژههای دیگر کپی کنیم. این اولین قدم برای ایجاد یک اپلیکیشن قابل استفاده مجدد است.
بستهبندی اپلیکیشن برای استفاده مجدد و انتشار
۱. نصب پیشنیازها
برای بستهبندی اپلیکیشن از ابزار setuptools استفاده میکنیم که استاندارد پایتون برای این کار است. همچنین به pip
برای نصب بسته نیاز داریم.
۲. ایجاد پوشه بسته (Package Folder)
خارج از پروژه جنگو، یک دایرکتوری جدید به نام
django-polls
بسازید.دایرکتوری
polls
را بهdjango_polls
تغییر نام دهید و به داخلdjango-polls/
منتقل کنید.
۳. ویرایش فایل apps.py
در django_polls/apps.py
، نام ماژول را به django_polls
تغییر دهید و یک برچسب کوتاه (label) اضافه کنید:
from django.apps import AppConfig
class PollsConfig(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
name = "django_polls"
label = "polls"
۴. ایجاد فایل README.rst
فایل README.rst
توضیح میدهد این بسته چیست و چگونه استفاده شود:
============
django-polls
============
django-polls یک اپلیکیشن جنگو برای ساخت نظرسنجیهای آنلاین است.
...
نحوه شروع سریع:
1. افزودن "polls" به `INSTALLED_APPS`.
2. اضافه کردن آدرس URL اپلیکیشن در `urls.py`.
3. اجرای دستور مهاجرت برای ساخت جداول دیتابیس.
4. راهاندازی سرور و استفاده از اپلیکیشن.
۵. اضافه کردن فایل LICENSE
برای مشخص کردن مجوز استفاده، باید فایل مجوز (License) ایجاد کنید. مجوز BSD یکی از مجوزهای رایج برای اپلیکیشنهای جنگو است.
۶. ایجاد فایل pyproject.toml
این فایل اطلاعات ساخت و نصب بسته را تعیین میکند:
[build-system]
requires = ["setuptools>=69.3"]
build-backend = "setuptools.build_meta"
[project]
name = "django-polls"
version = "0.1"
dependencies = [
"django>=X.Y", # نسخه مناسب جنگو را جایگزین کنید
]
description = "اپلیکیشنی برای ساخت نظرسنجیهای آنلاین در جنگو."
readme = "README.rst"
requires-python = ">=3.10"
authors = [
{name = "نام شما", email = "youremail@example.com"},
]
classifiers = [
"Environment :: Web Environment",
"Framework :: Django",
...
]
[project.urls]
Homepage = "https://www.example.com/"
۷. اضافه کردن فایل MANIFEST.in
برای اضافه کردن فایلهای قالب (templates) و استاتیک به بسته:
recursive-include django_polls/static *
recursive-include django_polls/templates *
۸. ساخت بسته و تست
با نصب بسته
build
و اجرای دستور زیر، بسته خود را بسازید:
python -m build
بسته در پوشه
dist/
ایجاد میشود.
نصب بسته ساخته شده و استفاده در پروژه
نصب به صورت کاربر معمولی
python -m pip install --user django-polls/dist/django_polls-0.1.tar.gz
ویرایش تنظیمات پروژه
INSTALLED_APPS = [
"django_polls.apps.PollsConfig",
...
]
ویرایش فایل urls.py
:
urlpatterns = [
path("polls/", include("django_polls.urls")),
...
]
نکات تکمیلی و انتشار بسته
میتوانید بسته را در PyPI منتشر کنید تا دیگران هم بتوانند از آن استفاده کنند.
توصیه میشود برای پروژههای بزرگ از محیطهای مجازی (virtualenv یا venv) استفاده کنید تا وابستگیها از هم جدا باشند و از تداخل بستهها جلوگیری شود.
جمعبندی
ساخت اپلیکیشنهای قابل استفاده مجدد در جنگو باعث میشود:
کد شما سازمانیافتهتر و قابل نگهداریتر باشد.
بتوانید اپلیکیشنهای خود را در پروژههای مختلف به سادگی استفاده کنید.
امکان انتشار و به اشتراکگذاری اپلیکیشن با جامعه توسعهدهندگان فراهم شود.
0 دیدگاه