دستورات جنگو در ترمینال، ستون فقرات کار با این فریم‌ورک هستند. از لحظه نصب پایتون تا استقرار نهایی، هر مرحله با یک دستور خط فرمان پیش می‌رود. در این راهنما، تمام دستورات 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 دارید یا با خطایی مواجه شده‌اید که راه‌حل جالبی برای آن پیدا کرده‌اید، خوشحال می‌شوم در دیدگاه‌ها بشنوم. به‌خصوص اگر راه‌حل خلاقانه‌ای برای اتوماسیون با این دستورات دارید که می‌تواند برای سایر توسعه‌دهندگان مفید باشد.