Необходимо создать сайт для бронирования столиков в ресторане. Сайт должен быть сверстан и подключен к админке. Для выполнения задачи необходимо использовать Django и Bootstrap. Сайт должен содержать основные разделы, необходимые для бронирования столиков и управления бронированиями.
- Сверстать сайт для бронирования столиков.
- Подключить сайт к админке Django.
- Использовать Bootstrap для создания адаптивного и привлекательного интерфейса.
- Подготовить финальную презентацию для защиты
- Главная страница:
- Описание ресторана.
- Перечень предоставляемых услуг.
- Контактная информация.
- Форма для обратной связи.
- Страница "О ресторане":
- История ресторана.
- Миссия и ценности.
- Команда.
- Страница бронирования:
- Форма для бронирования столика.
- Просмотр доступности столиков.
- Подтверждение бронирования.
- Личный кабинет:
- Регистрация и авторизация пользователей.
- Просмотр истории бронирований.
- Управление текущими бронированиями (изменение, отмена).
- Админка:
- Управление пользователями.
- Управление бронированиями.
- Управление контентом сайта (тексты, изображения и т.д.).
- Фреймворк:
- Использовать фреймворк Django для реализации проекта.
- База данных:
- Использовать PostgreSQL для хранения данных.
- Фронтенд:
- Использовать Bootstrap для создания адаптивного интерфейса.
- Контейнеризация:
- Использовать Docker и Docker Compose для контейнеризации приложения.
- Документация:
- В корне проекта должен быть файл README.md с описанием структуры проекта и инструкциями по установке и запуску.
- Качество кода:
- Соблюдать стандарты PEP8.
- Весь код должен храниться в удаленном Git репозитории.
Предварительные условия:
- Python 3.11
- PostgreSQL
- Poetry
- Redis
- Celery
- Bootstrap
Главное приложение проекта - config.
restaurant_reservations/
├── config/
│ ├── __init__.py
│ ├── asgi.py
│ ├── celery.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── restaurant/
│ ├── migrations/
│ ├── templates/
│ ├── restaurant/
│ ├── templatetags/
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── forms.py
│ ├── models.py
│ ├── tasks.py
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── users/
│ ├── fixtures/
│ ├── managements/
│ │ ├── commands/
│ │ │ ├── __init__.py
│ │ │ └── csu.py
│ │ └── __init__.py
│ ├── migrations/
│ ├── templates/
│ ├── users/
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── forms.py
│ ├── models.py
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── media/
├── static/
├── .env_example
├── .gitignore
├── Dockerfile
├── docker-compose.yaml
├── .dockerignore
├── manage.py
├── poetry.lock
├── poetry.toml
└── README.md
- Клонирование репозитория:
git clone <репозиторий_GitHub>
cd <название_репозитория>- Установка poetry:
pip install poetry- Установка зависимостей:
poetry install- Настройка переменных окружения:
Создайте файл .env в корне проекта и заполните его переменными по шаблону .env_example:
DATABASE_URL=<URL_для_подключения_к_PostgreSQL>
SECRET_KEY=<секретный_ключ>
...
- Создание базы данных:
python manage.py migrate- Создание администратора:
python manage.py csu- Запуск сервера разработки:
python manage.py runserver- Запуск Celery (для отложенных задач Windows):
celery -A config worker -l info -P gevent- Запуск Flower (для мониторинга Celery задач):
celery -A config flower --port=5555Для формирования отчета при помощи flake8-html выполните команду:
flake8 --format=html --ignore=migrations/,venv/,E501 --htmldir=flake8_report ./--format=html - параметр, указывающий на тип формата отчета
--ignore=migrations/,venv,E501 - параметр принимает: игнорируемые директории, файлы, коды ошибок
--htmldir=flake8_report ./ - параметр для создания директории с отчетом
./ - это корневая директория проекта для создания папки flake8_report
index.html - файл с отчетом
Этот проект можно легко развернуть с помощью Docker и Docker Compose. Для этого необходимо установить Docker и Docker Compose на вашей системе.
- Создайте файлы Dockerfile и docker-compose.yaml в корне проекта:
- описывает шаги для создания образа Docker для приложения Django, используя Poetry для управления зависимостями:
FROM python:3.11-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app
COPY poetry.lock pyproject.toml ./
RUN python -m pip install --no-cache-dir poetry==1.8.3 \
&& poetry config virtualenvs.create false \
&& poetry install --no-interaction --no-ansi \
&& rm -rf $(poetry config cache-dir)/{cache, artifacts}
COPY . .
RUN apt-get update && apt-get install -y procps netcat curl && rm -rf /var/lib/apt/lists/*
RUN apt-get update && apt-get install -y netcat
Файл docker-compose.yaml описывает сервисы, необходимые для запуска приложения, включая Django, PostgreSQL, Redis и
Celery:
services:
db:
image: postgres:16
restart: always
env_file:
- .env
environment:
POSTGRES_DB: ${DATABASE_NAME}
POSTGRES_USER: ${DATABASE_USER}
POSTGRES_PASSWORD: ${DATABASE_PASSWORD}
PGDATA: /var/lib/postgresql/data/pgdata
volumes:
- ./db_data:/var/lib/postgresql/data
healthcheck:
test: [ "CMD-SHELL", "pg_isready -U ${DATABASE_USER} -d ${DATABASE_NAME}" ]
interval: 10s
timeout: 5s
retries: 5
redis:
image: redis:alpine
restart: always
ports:
- "6380:6379"
healthcheck:
test: [ "CMD", "redis-cli", "ping" ]
interval: 5s
timeout: 5s
retries: 5
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
restart: always
volumes:
- .:/app
ports:
- "8000:8000"
env_file:
- .env
depends_on:
db:
condition: service_healthy
celery_worker:
build: .
command: celery -A config worker -l info
restart: always
volumes:
- .:/app
env_file:
- .env
depends_on:
- db
- redis
- web
celery_beat:
build: .
command: celery -A config beat -l info -S django
restart: always
volumes:
- .:/app
env_file:
- .env
depends_on:
- db
- redis
- web
volumes:
db_data:
driver: local
-
Запустите контейнеры Docker Compose:
docker-compose up --build
Этот процесс создаст и запустит все необходимые контейнеры. Для запуска в фоновом режиме используйте:
docker-compose up --build -d
-
Примените миграции Django:
docker-compose exec app python manage.py migrate- Приложение будет доступно по адресу
http://localhost:8000.
-
Остановить контейнеры:
docker-compose down
-
Очистить тома данных (если используются):
docker-compose down -v
-
Очистка неиспользуемых данных Docker
docker system prune -af
-
Очистка неиспользуемых данных Docker + также удаление неиспользуемых томов
docker system prune -af --volumes
- Убедитесь, что у вас установлен Docker и Docker Compose.
- Измените
your_passwordв файле.envна свой пароль для PostgreSQL. - Вы можете остановить контейнеры с помощью команды
docker-compose down. - Убедитесь, что порты, используемые в
docker-compose.yaml, свободны на вашем хосте. - Для доступа к базе данных PostgreSQL внутри контейнера
используйте
docker-compose exec db psql -U your_db_user your_db_name. - Для просмотра логов Celery или Django используйте
docker-compose logs -f celeryилиdocker-compose logs -f app.
- Резервное копирование данных: Регулярно создавайте резервные копии данных PostgreSQL, если это необходимо.
- Обновления: Время от времени обновляйте образы Docker и зависимости проекта для безопасности и производительности.
- Poetry: Убедитесь, что версия Poetry, указанная в Dockerfile, совпадает с той, что используется в вашем проекте для избежания конфликтов зависимостей.
Халуева Ангелина||Sprite_Spirit