رفتن به محتوا

Python · Django

Djangoراهنمای جامع دستورات

همه دستورات ضروری Django در Ubuntu — از نصب تا Production

۴۵ دستور · ۱۲ بخش

فهرست این برگه

نصب و راه‌اندازی محیط مجازی

قبل از هر کاری Python، pip و venv را نصب کرده و یک محیط مجازی بسازید تا وابستگی‌های پروژه از هم جدا بمانند.

bash
# نصب Python، pip و venv
sudo apt update && sudo apt install python3 python3-pip python3-venv -y

# ساخت محیط مجازی
python3 -m venv venv

# فعال‌سازی
source venv/bin/activate

# نصب Django
pip install django

# بررسی نسخه
django-admin --version

# غیرفعال کردن
deactivate

همیشه قبل از کار، محیط مجازی را فعال کنید. وقتی فعال است، (venv) در ابتدای ترمینال نمایش داده می‌شود.

ساخت پروژه و اپلیکیشن

با django-admin پروژه اصلی ساخته می‌شود و با startapp اپ‌های داخل آن.

bash
# ساخت پروژه جدید
django-admin startproject myproject

# ورود به پوشه پروژه
cd myproject

# ساخت اپلیکیشن جدید
python manage.py startapp myapp

# مشاهده ساختار فایل‌ها
find . -type f -name "*.py" | head -20

بعد از ساخت اپ، آن را به INSTALLED_APPS در settings.py اضافه کنید.

مدیریت دیتابیس — Migrations

Migration‌ها تغییرات مدل‌های Python را به جدول‌های دیتابیس تبدیل می‌کنند. هر بار که مدل تغییر می‌کند باید migration بسازید.

bash
# ساخت فایل‌های migration
python manage.py makemigrations

# migration برای یک اپ خاص
python manage.py makemigrations myapp

# اعمال همه migration‌ها
python manage.py migrate

# نمایش وضعیت migration‌ها
python manage.py showmigrations

# بازگشت به migration خاص
python manage.py migrate myapp 0001

# نمایش SQL یک migration
python manage.py sqlmigrate myapp 0001

# بررسی مشکلات مدل‌ها
python manage.py check

اجرای سرور توسعه

سرور داخلی Django فقط برای توسعه و تست محلی است — هرگز در محیط production از آن استفاده نکنید.

bash
# اجرا روی پورت پیش‌فرض 8000
python manage.py runserver

# اجرا روی پورت دلخواه
python manage.py runserver 8080

# دسترسی از شبکه
python manage.py runserver 0.0.0.0:8000

# بدون reload خودکار
python manage.py runserver --noreload

هشدار: این سرور تک‌نخی و بدون امنیت است. برای production از Gunicorn یا uWSGI استفاده کنید.

مدیریت کاربران و پنل ادمین

Django یک پنل ادمین آماده و قدرتمند دارد. برای ورود باید ابتدا superuser بسازید.

bash
# ساخت superuser (ادمین)
python manage.py createsuperuser

# تغییر رمز عبور کاربر
python manage.py changepassword username

# آدرس پنل ادمین
http://127.0.0.1:8000/admin

Django Shell و دیباگ

با shell می‌توانید مستقیم با ORM، مدل‌ها و تنظیمات Django تعامل داشته باشید — عالی برای تست سریع.

bash / python
# باز کردن Django shell
python manage.py shell

# shell با IPython
pip install ipython
python manage.py shell -i ipython

# مثال داخل shell
from myapp.models import MyModel
MyModel.objects.all()
MyModel.objects.filter(name="test")
MyModel.objects.create(name="new")

# بررسی کامل پروژه
python manage.py check
python manage.py check --deploy

فایل‌های استاتیک

در production باید همه فایل‌های CSS، JS و تصویر را در یک پوشه جمع‌آوری کنید.

bash / python
# جمع‌آوری فایل‌های استاتیک
python manage.py collectstatic
python manage.py collectstatic --noinput
python manage.py collectstatic --clear

# تنظیمات در settings.py
STATIC_URL  = "/static/"
STATIC_ROOT = BASE_DIR / "staticfiles"
MEDIA_URL   = "/media/"
MEDIA_ROOT  = BASE_DIR / "media"

تست‌نویسی

Django ابزار تست داخلی دارد. تست‌ها را در tests.py هر اپ بنویسید.

bash
# اجرای همه تست‌ها
python manage.py test

# تست یک اپ خاص
python manage.py test myapp

# تست یک کلاس خاص
python manage.py test myapp.tests.MyTestCase

# با جزئیات بیشتر
python manage.py test --verbosity=2

# نگه‌داشتن دیتابیس بعد از تست
python manage.py test --keepdb

مدیریت داده‌ها — Fixtures

برای پشتیبان‌گیری، انتقال داده بین محیط‌ها یا پر کردن دیتابیس با داده اولیه استفاده می‌شود.

bash
# خروجی از همه داده‌ها
python manage.py dumpdata > db.json

# خروجی از یک اپ خاص
python manage.py dumpdata myapp --indent 2 > myapp.json

# وارد کردن داده
python manage.py loaddata db.json

# پاک کردن session‌های منقضی
python manage.py clearsessions

پکیج‌های ضروری Django

پرکاربردترین پکیج‌های اکوسیستم Django:

djangorestframework

ساخت REST API قدرتمند

django-cors-headers

مدیریت CORS برای API

Pillow

پردازش و آپلود تصویر

psycopg2-binary

اتصال به PostgreSQL

celery + redis

کارهای پس‌زمینه و صف

gunicorn

سرور WSGI برای production

python-decouple

مدیریت متغیرهای .env

whitenoise

سرو فایل‌های استاتیک

django-extensions

ابزارهای اضافی توسعه

django-filter

فیلتر کردن در API

bash
# ذخیره وابستگی‌ها
pip freeze > requirements.txt

# نصب از روی requirements
pip install -r requirements.txt

تنظیمات اساسی — settings.py

مهم‌ترین تنظیماتی که در هر پروژه Django باید بدانید:

python — settings.py
# اضافه کردن اپ‌ها
INSTALLED_APPS = [
    'myapp',
    'rest_framework',
    'corsheaders',
]

# دیتابیس PostgreSQL
DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.postgresql",
        "NAME": "mydb",
        "USER": "myuser",
        "PASSWORD": "mypass",
        "HOST": "localhost",
        "PORT": "5432",
    }
}

# زبان و منطقه زمانی
LANGUAGE_CODE = "fa-ir"
TIME_ZONE     = "Asia/Tehran"
USE_I18N      = True
USE_TZ        = True

# ALLOWED_HOSTS در production
ALLOWED_HOSTS = ["yourdomain.com", "www.yourdomain.com"]

استقرار در Production با Gunicorn

برای اجرای Django در محیط واقعی از Gunicorn به عنوان سرور WSGI استفاده کنید.

bash
# نصب gunicorn
pip install gunicorn

# اجرای پایه
gunicorn myproject.wsgi:application --bind 0.0.0.0:8000

# با worker بیشتر (توصیه: 2×CPU+1)
gunicorn myproject.wsgi:application --workers 3 --bind 0.0.0.0:8000

# اجرا به عنوان daemon
gunicorn myproject.wsgi:application --daemon --workers 3 --bind 0.0.0.0:8000

# checklist قبل از production
python manage.py check --deploy
python manage.py migrate
python manage.py collectstatic --noinput

هشدار: در production حتماً DEBUG = False و SECRET_KEY را در متغیر محیطی قرار دهید. هرگز secret key را در کد commit نکنید.