🔖 Справочник: команды Django

⚡ Главные команды

# Установка
pip install django

# Создать проект (точка = в текущей папке)
django-admin startproject config .

# Создать приложение
python manage.py startapp myapp

# Запустить сервер разработки
python manage.py runserver

# Миграции
python manage.py makemigrations
python manage.py migrate

# Суперпользователь
python manage.py createsuperuser

# Оболочка Django
python manage.py shell

Установка Django

# Создать виртуальное окружение
python -m venv venv

# Активировать (Windows)
venv\Scripts\activate

# Активировать (macOS/Linux)
source venv/bin/activate

# Установить Django
pip install django

# Проверить версию
python -m django --version

django-admin — создание проекта

# Создать проект В ТЕКУЩЕЙ папке (рекомендуется)
django-admin startproject config .

# Создать проект (создаёт дополнительную директорию config/)
django-admin startproject config

# Список доступных команд
django-admin help
Точка в конце команды означает «создать структуру прямо в текущей директории», без добавления лишней вложенности. Рекомендуется использовать именно так.

manage.py — управление проектом

Запуск сервера разработки

# Запуск на стандартном порту 8000
python manage.py runserver

# Запуск на другом порту
python manage.py runserver 8080

# Запуск на конкретном адресе и порту
python manage.py runserver 0.0.0.0:8000

Работа с приложениями

# Создать новое приложение
python manage.py startapp myapp

# После создания зарегистрировать в settings.py:
INSTALLED_APPS = [
    # ... встроенные приложения ...
    'myapp',
]

Миграции базы данных

# Создать файлы миграций (по изменениям в models.py)
python manage.py makemigrations

# Создать миграцию для конкретного приложения
python manage.py makemigrations myapp

# Применить все миграции к базе данных
python manage.py migrate

# Применить миграции конкретного приложения
python manage.py migrate myapp

# Посмотреть статус миграций
python manage.py showmigrations

# Откатить миграции приложения
python manage.py migrate myapp zero

Управление пользователями

# Создать суперпользователя (интерактивно)
python manage.py createsuperuser

# Изменить пароль пользователя
python manage.py changepassword username

Интерактивная оболочка

# Запустить Django shell (Python REPL с загруженным проектом)
python manage.py shell

# Пример использования в shell:
# >>> from myapp.models import MyModel
# >>> MyModel.objects.all()

Сборка статических файлов

# Собрать все статические файлы в STATIC_ROOT
python manage.py collectstatic

Диагностика

# Проверить корректность конфигурации проекта
python manage.py check

# Посмотреть список всех доступных команд
python manage.py help

Структура urls.py — маршрутизация

# config/urls.py — корневые маршруты
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('myapp.urls')),
    path('api/', include('myapp.urls')),  # с префиксом
]
# myapp/urls.py — маршруты приложения
from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
    path('hello/', views.hello, name='hello'),
    path('items/<int:item_id>/', views.item_detail, name='item-detail'),
]
Функция path() принимает: строку маршрута, view-функцию (или класс), необязательное имя маршрута (name=).

Простые views (функциональные)

# myapp/views.py
from django.http import HttpResponse
from django.shortcuts import render

def index(request):
    return HttpResponse("Hello, World!")

def hello(request):
    name = request.GET.get('name', 'World')
    return HttpResponse(f"Hello, {name}!")

def about(request):
    context = {'title': 'О нас'}
    return render(request, 'myapp/about.html', context)

Шаблоны Django (DTL)

# myapp/templates/myapp/index.html
<!DOCTYPE html>
<html>
<head><title>{{ title }}</title></head>
<body>
  <h1>{{ title }}</h1>
  {% for item in items %}
    <p>{{ item }}</p>
  {% endfor %}
</body>
</html>
Шаблоны Django ищутся автоматически в папке templates/ каждого приложения, если в settings.py установлено 'APP_DIRS': True.