Sobes.tech
Junior
103
questionbank

Назовите основные сущности в Django.

Ответ от нейросети

sobes.tech AI

  • Проект (Project): Набор настроек и приложений для веб-сайта.
  • Приложение (App): Самодостаточный модуль для выполнения определенной задачи или набора взаимосвязанных функций. Содержит модели, представления, URL-адреса и миграции.
  • Модели (Models): Определяют структуру данных. Представляют собой классы, которые наследуются от django.db.models.Model и каждая переменная в классе представляет поле в таблице базы данных. ActiveRecord-паттерн.
    // models.py
    from django.db import models
    
    class Product(models.Model):
        name = models.CharField(max_length=100)
        price = models.DecimalField(max_digits=10, decimal_places=2)
    
        def __str__(self):
            return self.name
    
  • Представления (Views): Функции или классы, которые обрабатывают HTTP-запросы, взаимодействуют с моделями и возвращают HTTP-ответы (обычно в виде HTML-страниц).
    // views.py
    from django.shortcuts import render
    from .models import Product
    
    def product_list(request):
        products = Product.objects.all()
        return render(request, 'products/product_list.html', {'products': products})
    
  • Шаблоны (Templates): Файлы, содержащие статический HTML и специальный синтаксис для динамического контента (теги шаблонов и переменные). Используются представлениями для генерации HTTP-ответов.
    <!-- products/product_list.html -->
    <h1>Список товаров</h1>
    <ul>
        {% for product in products %}
            <li>{{ product.name }} - ${{ product.price }}</li>
        {% endfor %}
    </ul>
    
  • URL-адреса (URLs): Связывают URL-адреса с представлениями. Определяются в файлах urls.py.
    // urls.py
    from django.urls import path
    from . import views
    
    urlpatterns = [
        path('products/', views.product_list, name='product_list'),
    ]
    
  • Формы (Forms): Обработка пользовательского ввода. Предоставляют классы для создания HTML-форм, валидации данных и их сохранения в модели.
    // forms.py
    from django import forms
    from .models import Product
    
    class ProductForm(forms.ModelForm):
        class Meta:
            model = Product
            fields = ['name', 'price']
    
  • Миграции (Migrations): Изменения в схеме базы данных, основанные на моделях. Управляются встроенной командой makemigrations и migrate.

Эти сущности работают вместе по MVC-подобному паттерну, где Модели - это данные, Представления - логика обработки запросов, а Шаблоны - слой представления (UI). Django часто описывают как MVT (Model-View-Template).