Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Из чего состоит Django
Django — полнофункциональный веб-фреймворк. Вот его основные компоненты и архитектура.
MVT архитектура (Model-View-Template)
Пользователь → URL маршрутизация
↓
View (контроллер)
↓
Model (данные)
↓ ↓ ↓
БД Cache Signals
↓
Template (HTML)
↓
Ответ пользователю
1. ORM (Object-Relational Mapping)
# Models определяют структуру БД
from django.db import models
class User(models.Model):
name = models.CharField(max_length=100)
email = models.EmailField(unique=True)
created_at = models.DateTimeField(auto_now_add=True)
# Автоматическая миграция
python manage.py makemigrations
python manage.py migrate
# Работа с БД через Python
user = User.objects.create(name='John', email='john@example.com')
users = User.objects.filter(name='John')
2. Views и URL маршрутизация
# urls.py
from django.urls import path
from . import views
urlpatterns = [
path('users/', views.user_list, name='user-list'),
path('users/<int:id>/', views.user_detail, name='user-detail'),
]
# views.py
from django.shortcuts import render
from .models import User
def user_list(request):
users = User.objects.all()
return render(request, 'users/list.html', {'users': users})
def user_detail(request, id):
user = User.objects.get(id=id)
return render(request, 'users/detail.html', {'user': user})
3. Templates (HTML шаблоны)
<!-- templates/users/list.html -->
<h1>Users</h1>
<ul>
{% for user in users %}
<li>{{ user.name }} ({{ user.email }})</li>
{% endfor %}
</ul>
4. Forms
from django import forms
class UserForm(forms.ModelForm):
class Meta:
model = User
fields = ['name', 'email']
# В view
def create_user(request):
if request.method == 'POST':
form = UserForm(request.POST)
if form.is_valid():
form.save()
else:
form = UserForm()
return render(request, 'create.html', {'form': form})
5. Admin интерфейс
from django.contrib import admin
@admin.register(User)
class UserAdmin(admin.ModelAdmin):
list_display = ['name', 'email', 'created_at']
search_fields = ['name', 'email']
list_filter = ['created_at']
# http://localhost:8000/admin
6. Authentication & Authorization
from django.contrib.auth.decorators import login_required
@login_required
def protected_view(request):
return render(request, 'protected.html')
# Встроенная система пользователей
from django.contrib.auth.models import User
user = User.objects.create_user(username='john', password='secret')
7. Middleware
# settings.py
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
]
# Custom middleware
class CustomMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
response = self.get_response(request)
return response
8. Signals (события)
from django.db.models.signals import post_save
from django.dispatch import receiver
@receiver(post_save, sender=User)
def user_created(sender, instance, created, **kwargs):
if created:
print(f"New user: {instance.name}")
9. Management Commands
# myapp/management/commands/my_command.py
from django.core.management.base import BaseCommand
class Command(BaseCommand):
def handle(self, *args, **options):
print("Running custom command")
# Запуск
python manage.py my_command
10. Testing
from django.test import TestCase, Client
class UserTests(TestCase):
def test_user_creation(self):
user = User.objects.create(name='John', email='john@example.com')
self.assertEqual(user.name, 'John')
def test_user_list_view(self):
client = Client()
response = client.get('/users/')
self.assertEqual(response.status_code, 200)
Структура проекта
myproject/
├── manage.py
├── requirements.txt
├── myproject/
│ ├── settings.py # Конфигурация
│ ├── urls.py # Маршруты проекта
│ ├── wsgi.py # WSGI приложение
│ └── asgi.py # ASGI приложение
├── myapp/
│ ├── models.py # БД модели
│ ├── views.py # Контроллеры
│ ├── urls.py # Маршруты приложения
│ ├── templates/ # HTML шаблоны
│ ├── static/ # CSS, JS, изображения
│ ├── tests.py # Тесты
│ └── admin.py # Admin конфиг
Settings.py ключевые части
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp',
]
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydb',
}
}
SECRET_KEY = 'secret-key-for-production'
DEBUG = False
ALLOWED_HOSTS = ['example.com']
Class-Based Views
from django.views import View
from django.views.generic import ListView, DetailView
class UserListView(ListView):
model = User
template_name = 'users/list.html'
context_object_name = 'users'
paginate_by = 10
class UserDetailView(DetailView):
model = User
template_name = 'users/detail.html'
pk_url_kwarg = 'id'
Вывод: Django состоит из ORM, Views, Templates, Forms, Admin, Auth, Middleware, Signals и других компонентов, образуя полноценный фреймворк для разработки веб-приложений.