دستورات جنگو: راهنمای کامل django-admin و ترمینال
دستورات جنگو در ترمینال: از django-admin تا pip و virtualenv. راهنمای جامع با مثالهای عملی برای توسعهدهندگان.
دستورات جنگو در ترمینال، ستون فقرات کار با این فریمورک هستند. از لحظه نصب پایتون تا استقرار نهایی، هر مرحله با یک دستور خط فرمان پیش میرود. در این راهنما، تمام دستورات django-admin و سایر ابزارهای ترمینال مرتبط با جنگو را بررسی میکنیم؛ بهجز manage.py که مقاله جداگانهای به آن اختصاص داده شده است. هدف این است که با تسلط بر این دستورات، چرخه توسعه را سریعتر و حرفهایتر کنید.
در تجربه کار با پروژههای متعدد جنگو، دیدهام که بسیاری از توسعهدهندگان فقط با manage.py آشنا هستند و از قدرت django-admin و سایر ابزارهای خط فرمان غافل میمانند. در حالی که django-admin در برخی سناریوها انعطاف بیشتری دارد و برای اتوماسیون و CI/CD ضروری است. این مقاله شکاف دانشی را پر میکند.
شروع کار با جنگو بدون درک دستورات ترمینال، مانند رانندگی بدون شناختن پدالهاست. در ادامه، از ابتداییترین دستورات تا پیشرفتهترین سناریوها را پوشش میدهیم.
django-admin چیست و چه تفاوتی با manage.py دارد؟
django-admin ابزار خط فرمان رسمی جنگو است که هنگام نصب جنگو در محیط شما قرار میگیرد. این ابزار به تنظیمات یک پروژه خاص وابسته نیست و میتواند برای ساخت پروژه جدید، اجرای دستورات مدیریتی و بسیاری از وظایف دیگر استفاده شود. در مقابل، manage.py یک فایل اسکریپت است که در ریشه هر پروژه قرار دارد و تنظیمات آن پروژه را بارگذاری میکند. به عبارت دیگر، manage.py یک wrapper شخصیسازیشده حول django-admin است.
تفاوت اصلی در این است که django-admin به متغیر محیطی DJANGO_SETTINGS_MODULE نیاز دارد تا بداند از کدام تنظیمات استفاده کند. اگر این متغیر تنظیم نشده باشد، بسیاری از دستورات django-admin خطا میدهند. اما manage.py این متغیر را بهطور خودکار از فایل تنظیمات پروژه میخواند. بنابراین، برای کارهای روزمره روی یک پروژه، manage.py راحتتر است؛ اما برای اسکریپتهای عمومی، اتوماسیون یا زمانی که میخواهید چند پروژه را مدیریت کنید، django-admin انتخاب بهتری است.
«django-admin قدرت خام جنگو را در اختیار شما میگذارد؛ manage.py آن را برای یک پروژه خاص مهار میکند.»
برای مشاهده لیست کامل دستورات django-admin کافی است دستور زیر را اجرا کنید:
django-admin help
یا برای راهنمای یک دستور خاص:
django-admin help startproject
راهاندازی محیط: python، pip و virtualenv
قبل از هر چیز، باید محیط پایتون و ابزارهای مربوطه را آماده کنید. این دستورات پیشنیاز کار با جنگو هستند.
بررسی نسخه پایتون
python --version
یا در لینوکس و مک:
python3 --version
جنگو 5 به پایتون 3.10 تا 3.13 نیاز دارد. نسخه خود را بررسی کنید.
نصب pip
pip معمولاً همراه پایتون نصب میشود. برای اطمینان:
python -m pip --version
اگر نصب نبود، از ensurepip استفاده کنید:
python -m ensurepip --upgrade
ایجاد محیط مجازی
محیط مجازی از تداخل نسخهها جلوگیری میکند. برای ایجاد:
python -m venv myenv
فعالسازی در ویندوز:
myenvScriptsactivate
در لینوکس و مک:
source myenv/bin/activate
نصب جنگو
pip install django
برای نصب نسخه خاص:
pip install django==5.1.7
این مراحل پایهای را در آموزش جنگو برای مبتدیان بهطور کامل توضیح دادهام.
دستورات کلیدی django-admin
دستورات django-admin به دستههای مختلفی تقسیم میشوند. در ادامه مهمترین آنها را با مثال بررسی میکنیم.
startproject – ساخت پروژه جدید
django-admin startproject mysite
این دستور ساختار اولیه پروژه را ایجاد میکند. برای ساخت پروژه در پوشه فعلی:
django-admin startproject mysite .
نکته نقطه در انتها باعث میشود فایلها در پوشه فعلی ایجاد شوند و یک پوشه اضافی ساخته نشود.
startapp – ساخت اپلیکیشن جدید
django-admin startapp blog
این دستور ساختار اولیه یک اپ را میسازد. سپس باید آن را به INSTALLED_APPS اضافه کنید. برای اپهای پیچیدهتر، مقاله ساخت اپ جنگو برای ردیابی بازدیدکنندگان را ببینید.
check – بررسی سلامت پروژه
django-admin check
خطاهای پیکربندی را بدون اجرای سرور بررسی میکند. برای بررسی تنظیمات تولید:
django-admin check --deploy
runserver – اجرای سرور توسعه
django-admin runserver
در محیط توسعه استفاده میشود. هرگز در تولید به کار نرود.
shell – پوسته تعاملی
django-admin shell
برای آزمایش سریع کد و مدلها. برای پروژههای بزرگ، استفاده از shell_plus از پکیج django-extensions توصیه میشود.
diffsettings – مقایسه تنظیمات
django-admin diffsettings
تنظیمات فعلی را با پیشفرضهای جنگو مقایسه میکند.
sendtestemail – تست ارسال ایمیل
django-admin sendtestemail admin@example.com
برای اطمینان از پیکربندی درست SMTP.
| دستور | کاربرد | مثال |
|---|---|---|
startproject |
ساخت پروژه جدید | django-admin startproject mysite |
startapp |
ساخت اپ جدید | django-admin startapp blog |
check |
بررسی خطاهای پیکربندی | django-admin check |
runserver |
اجرای سرور توسعه | django-admin runserver |
shell |
پوسته تعاملی | django-admin shell |
مدیریت دیتابیس با django-admin
دستورات دیتابیس در django-admin بسیار قدرتمند هستند و برای مهاجرت، پشتیبانگیری و بررسی ساختار جداول استفاده میشوند.
makemigrations – ساخت فایل مهاجرت
django-admin makemigrations
برای یک اپ خاص:
django-admin makemigrations myapp
migrate – اعمال مهاجرتها
django-admin migrate
برای بازگشت به یک مهاجرت خاص:
django-admin migrate myapp 0002
showmigrations – نمایش وضعیت مهاجرتها
django-admin showmigrations
sqlmigrate – نمایش SQL مهاجرت
django-admin sqlmigrate myapp 0001
بدون اجرا، SQL تولیدشده را نشان میدهد. برای دیباگ عالی است.
dumpdata – خروجی دادهها
django-admin dumpdata > backup.json
برای خروجی یک اپ خاص:
django-admin dumpdata myapp > myapp_backup.json
loaddata – بارگذاری دادهها
django-admin loaddata backup.json
flush – پاک کردن دیتابیس
django-admin flush
تمام دادهها را حذف میکند اما ساختار باقی میماند. با احتیاط.
dbshell – اتصال به پوسته دیتابیس
django-admin dbshell
inspectdb – تولید مدل از دیتابیس موجود
django-admin inspectdb > models.py
برای پروژههای قدیمی که دیتابیس دارند و میخواهید مدلهای جنگو بسازید.
sqlflush – نمایش SQL پاکسازی
django-admin sqlflush
sqlsequencereset – بازنشانی دنبالهها
django-admin sqlsequencereset myapp
برای دیتابیسهای PostgreSQL مفید است.
squashmigrations – ادغام مهاجرتها
django-admin squashmigrations myapp 0001 0005
مهاجرتهای متعدد را در یک فایل ادغام میکند تا سرعت migrate افزایش یابد.
اگر با خطاهای مهاجرت مواجه شدید، مقاله چگونه خطاهای رایج Django را سریع و اصولی رفع کنیم؟ را بخوانید.
فایلهای استاتیک و رسانه
مدیریت فایلهای استاتیک در تولید حیاتی است. دستورات زیر به django-admin مربوط میشوند.
collectstatic – جمعآوری فایلهای استاتیک
django-admin collectstatic
برای عدم تأیید تعاملی:
django-admin collectstatic --noinput
findstatic – پیدا کردن مسیر فایل استاتیک
django-admin findstatic style.css
مدیریت کاربران و احراز هویت
دستورات مربوط به کاربران در django-admin نیز موجود هستند.
createsuperuser – ساخت کاربر ادمین
django-admin createsuperuser
برای ساخت غیرتعاملی:
django-admin createsuperuser --username admin --email admin@example.com
changepassword – تغییر رمز عبور
django-admin changepassword username
برای امنیت بیشتر، مقاله امنیت در Django: بهترین روشها را ببینید.
سایر دستورات ترمینال مفید برای جنگو
علاوه بر django-admin، دستورات ترمینال دیگری نیز در کار روزمره با جنگو ضروری هستند.
pip – مدیریت پکیجها
pip install django
pip freeze > requirements.txt
pip install -r requirements.txt
برای راهنمای کامل pip در جنگو، مقاله دستورات pip در جنگو را بخوانید.
git – کنترل نسخه
git init
git add .
git commit -m "Initial commit"
همیشه پروژه جنگو را در گیت نگهداری کنید. فایل .gitignore مناسب بسازید تا __pycache__، *.pyc، db.sqlite3 و media/ را نادیده بگیرد.
python – اجرای اسکریپتها
python script.py
برای اجرای اسکریپتهای مستقل که به تنظیمات جنگو نیاز دارند، از DJANGO_SETTINGS_MODULE استفاده کنید.
virtualenv – مدیریت محیطهای مجازی
اگر از virtualenv بهجای venv استفاده میکنید:
virtualenv myenv
source myenv/bin/activate
اتوماسیون و CI/CD با django-admin
در خط لوله CI/CD، django-admin نقش کلیدی دارد. میتوانید دستورات را در فایلهای YAML یا اسکریپتهای شل قرار دهید.
#!/bin/bash
set -e
pip install -r requirements.txt
django-admin migrate --noinput
django-admin collectstatic --noinput
django-admin check --deploy
این اسکریپت در هر استقرار اجرا میشود و از صحت پروژه مطمئن میشود. برای بهینهسازی عملکرد جنگو در محیط تولید، مقاله بهینهسازی عملکرد جنگو برای سایت پربازدید را ببینید.
پرسشهای پرتکرار درباره دستورات جنگو
آیا django-admin بهطور خودکار نصب میشود؟
بله، هنگام نصب جنگو با pip، django-admin نیز در محیط شما قرار میگیرد.
چگونه بفهمم django-admin در دسترس است؟
django-admin --version
اگر خطا داد، احتمالاً محیط مجازی فعال نیست یا جنگو نصب نشده است.
تفاوت اصلی django-admin و manage.py چیست؟
django-admin به تنظیمات پروژه وابسته نیست و برای کارهای عمومی و اتوماسیون مناسب است. manage.py تنظیمات یک پروژه خاص را بارگذاری میکند و برای کار روزمره راحتتر است.
آیا میتوانم django-admin را در ویندوز استفاده کنم؟
بله، اما ممکن است نیاز باشد از python -m django استفاده کنید:
python -m django startproject mysite
چگونه یک دستور سفارشی با django-admin بسازم؟
دستورات سفارشی معمولاً از طریق manage.py اجرا میشوند، اما میتوانید آنها را با django-admin نیز فراخوانی کنید، به شرط تنظیم DJANGO_SETTINGS_MODULE. برای جزئیات، مقاله نوشتن کامند مدیریتی برای پاکسازی دادههای قدیمی در جنگو را ببینید.
چگونه خروجی django-admin را در فایل ذخیره کنم؟
django-admin dumpdata > backup.json
آیا django-admin از چند دیتابیس پشتیبانی میکند؟
بله، با گزینه --database:
django-admin migrate --database=replica
چگونه سرعت دستورات django-admin را افزایش دهم؟
از --parallel در تستها و --keepdb برای جلوگیری از بازسازی دیتابیس تست استفاده کنید.
ملاحظات سطح ارشد
در سطح مهندسی ارشد، تسلط بر django-admin فراتر از اجرای دستورات است. شما باید بتوانید این دستورات را در محیطهای توزیعشده، با دیتابیسهای replicate و در خط لوله CI/CD بدون downtime اجرا کنید. یکی از الگوهای پیشرفته، استفاده از django-admin در ترکیب با fabric یا ansible برای استقرار خودکار است.
نکته کمتر شناختهشده: میتوانید متغیر DJANGO_SETTINGS_MODULE را بهصورت پویا تنظیم کنید تا یک دستور واحد روی چند محیط (development, staging, production) اجرا شود:
DJANGO_SETTINGS_MODULE=myproject.settings.production django-admin migrate
همچنین، برای پروژههایی که از django-tenants استفاده میکنند، دستور migrate_schemas جایگزین migrate میشود. این نکات در مقیاس بزرگ حیاتی میشوند.
در نهایت، برای مدیریت کارآمد داراییهای استاتیک در CDN، میتوانید از django-admin collectstatic با پشتیبان django-storages استفاده کنید تا فایلها مستقیماً در S3 یا Google Cloud Storage بارگذاری شوند.
«django-admin فقط یک ابزار خط فرمان نیست؛ دروازه ورود به اتوماسیون و مقیاسپذیری جنگو است.»
نگاه نهایی
دستورات جنگو در ترمینال، از django-admin تا pip و git، ابزارهای ضروری برای هر توسعهدهنده هستند. با تسلط بر این دستورات، میتوانید پروژهها را سریعتر بسازید، خطاها را ریشهای رفع کنید و استقرار حرفهایتری داشته باشید. پیشنهاد میکنم هر دستور را در یک پروژه آزمایشی اجرا کنید تا ملکه ذهنتان شود.
اگر تجربهای از استفاده از دستورات خاص django-admin دارید یا با خطایی مواجه شدهاید که راهحل جالبی برای آن پیدا کردهاید، خوشحال میشوم در دیدگاهها بشنوم. بهخصوص اگر راهحل خلاقانهای برای اتوماسیون با این دستورات دارید که میتواند برای سایر توسعهدهندگان مفید باشد.