Гайды
Django: создание первого проекта и приложения
venv, startproject и startapp, модели и миграции, админка, простой JSON view и настройки на старт.
~11 мин чтения
Django: создание первого проекта и приложения
Django — full-stack фреймворк: ORM, маршрутизация, шаблоны, админка, формы, миграции. Этот гайд — первый проект и приложение с понятной структурой. Оптимизация ORM — Django ORM: запросы и select_related; REST API — официальный tutorial Django REST framework.
1. Установка и виртуальное окружение
python -m venv .venv
.venv\Scripts\activate
pip install django
django-admin --version
Рекомендуется Django 5.x на Python 3.10+ (см. матрицу для вашей версии).
2. Создание проекта
django-admin startproject config .
Точка в конце кладёт manage.py и пакет config/ в текущий каталог.
Структура:
manage.py
config/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
settings.py — база данных, INSTALLED_APPS, MIDDLEWARE, SECRET_KEY, DEBUG, ALLOWED_HOSTS.
3. Приложение (app)
python manage.py startapp shop
Папка shop/ — модели, представления, urls.py, админка, тесты.
Добавьте shop в INSTALLED_APPS в settings.py.
4. Модель и миграции
shop/models.py:
from django.db import models
class Product(models.Model):
name = models.CharField(max_length=200)
price = models.DecimalField(max_digits=10, decimal_places=2)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.name
python manage.py makemigrations shop
python manage.py migrate
5. Админка (опционально, но полезно)
shop/admin.py:
from django.contrib import admin
from .models import Product
admin.site.register(Product)
Создайте суперпользователя: python manage.py createsuperuser, включите path("admin/", admin.site.urls) в config/urls.py.
6. View и URL
shop/views.py:
from django.http import JsonResponse
from .models import Product
def product_list(request):
items = list(Product.objects.values("id", "name", "price")[:50])
return JsonResponse({"items": items})
shop/urls.py:
from django.urls import path
from . import views
urlpatterns = [
path("products/", views.product_list),
]
config/urls.py:
from django.urls import path, include
urlpatterns = [
path("api/", include("shop.urls")),
]
7. Запуск
python manage.py runserver
Для продакшена — gunicorn + uvicorn (ASGI) или классический WSGI; статика через WhiteNoise или Nginx. Для полноценного REST API на Django — Django REST Framework.
8. Настройки на старт
SECRET_KEY— из env, не в Git.DEBUG=Falseв проде,ALLOWED_HOSTSзаполнен.DATABASES— PostgreSQL вместо SQLite, когда проект вырос.
9. Чек-лист
- Один крупный
models.pyили разбиение по подмодулям по мере роста. - Миграции коммитятся в репозиторий.
- Разделение
settings/base.py+local.py/prod.pyпо окружениям.
Дальше: Django REST Framework · Оптимизация ORM · тег Django