feat: добавить миграцию для моделей Category и Item, шаблон 404 страницы
All checks were successful
Build and Push Docker Image / build (push) Successful in 27s

- Создана миграция `0001_initial.py` для моделей `Category` и `Item`
- Добавлен шаблон `404.html` с пользовательским стилем и макетом ошибки
This commit is contained in:
2026-04-07 22:33:16 +02:00
parent a2702b13c7
commit db46b5eefc
2 changed files with 75 additions and 0 deletions

View File

@@ -0,0 +1,45 @@
# Generated by Django 6.0.3 on 2026-04-07 18:31
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Category',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=255, verbose_name='Название')),
('slug', models.SlugField(unique=True, verbose_name='URL')),
],
options={
'verbose_name': 'Категория',
'verbose_name_plural': 'Категории',
},
),
migrations.CreateModel(
name='Item',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=255, verbose_name='Название')),
('slug', models.SlugField(unique=True, verbose_name='URL')),
('description', models.TextField(blank=True, verbose_name='Описание')),
('price', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='Цена')),
('is_available', models.BooleanField(default=True, verbose_name='В наличии')),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Дата создания')),
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Дата обновления')),
('category', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='items', to='items.category', verbose_name='Категория')),
],
options={
'verbose_name': 'Товар',
'verbose_name_plural': 'Товары',
},
),
]

30
templates/404.html Normal file
View File

@@ -0,0 +1,30 @@
{% extends "_layouts/base.html" %}
{% load static %}
{% block title %}404{% endblock %}
{% block add_css %}
<link rel="stylesheet" href="{% static "css/index.css" %}">
<link rel="stylesheet" href="{% static 'css/error.css' %}">
{% endblock %}
{% block content %}
<div class="full-page">
{% include "_fragments/header.html" %}
<main class="container error-page">
<h1 class="error-code">4 0 4</h1>
<h2 class="error-subtitle">ОЙ, КАЖЕТСЯ ЗДЕСЬ НИЧЕГО НЕТ...</h2>
<p class="error-description">
Приносим свои извинения! Скорее всего вы попали <br>
на несуществующую страницу, предлагаем вам вернутся в каталог.
</p>
<div class="error-actions">
<a href="/catalog/" class="error-btn-1">ПЕРЕЙТИ В КАТАЛОГ</a>
<a href="/" class="error-btn-2">НА ГЛАВНУЮ</a>
</div>
</main>
{% include "_fragments/footer.html" %}
</div>
{% endblock %}