Python · Django
Djangoراهنمای جامع دستورات
همه دستورات ضروری Django در Ubuntu — از نصب تا Production
فهرست این برگه
نصب و راهاندازی محیط مجازی
قبل از هر کاری Python، pip و venv را نصب کرده و یک محیط مجازی بسازید تا وابستگیهای پروژه از هم جدا بمانند.
# نصب 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 اپهای داخل آن.
# ساخت پروژه جدید 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 بسازید.
# ساخت فایلهای 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 از آن استفاده نکنید.
# اجرا روی پورت پیشفرض 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 بسازید.
# ساخت superuser (ادمین) python manage.py createsuperuser # تغییر رمز عبور کاربر python manage.py changepassword username # آدرس پنل ادمین http://127.0.0.1:8000/admin
Django Shell و دیباگ
با shell میتوانید مستقیم با ORM، مدلها و تنظیمات Django تعامل داشته باشید — عالی برای تست سریع.
# باز کردن 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 و تصویر را در یک پوشه جمعآوری کنید.
# جمعآوری فایلهای استاتیک 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 هر اپ بنویسید.
# اجرای همه تستها 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
برای پشتیبانگیری، انتقال داده بین محیطها یا پر کردن دیتابیس با داده اولیه استفاده میشود.
# خروجی از همه دادهها 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
# ذخیره وابستگیها pip freeze > requirements.txt # نصب از روی requirements pip install -r requirements.txt
تنظیمات اساسی — settings.py
مهمترین تنظیماتی که در هر پروژه Django باید بدانید:
# اضافه کردن اپها 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 استفاده کنید.
# نصب 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 نکنید.