- HTML 39.3%
- Python 35.7%
- CSS 25%
| .qwen | ||
| marketplace | ||
| static/css | ||
| templates/marketplace | ||
| uvimarket | ||
| .env.example | ||
| .gitignore | ||
| manage.py | ||
| README.md | ||
| run.py | ||
| setup_admin.py | ||
Uvimarket
Современная площадка для покупок и продаж, аналог Avito.
🚀 Возможности
- Авторизация и регистрация — создание аккаунтов, вход/выход
- Объявления — создание, редактирование, удаление объявлений с фотографиями
- Поиск — поиск по названию и описанию объявлений
- Категории — 12 категорий товаров и услуг
- Сообщения — внутренняя переписка между пользователями с возможностью отправки изображений
- Контакты — телефон, email, Telegram продавца
- Темная/светлая тема — переключение с сохранением в localStorage
- Модерация — система банов, предупреждений, управления объявлениями
🛠️ Технологии
- Backend: Python 3.11, Django 5.2
- Database: SQLite
- Frontend: HTML5, CSS3, JavaScript (vanilla)
- Изображения: Pillow
📋 Требования
- Python 3.11+
- pip
⚙️ Установка
- Клонируйте репозиторий:
git clone <repository-url>
cd avito2
- Создайте виртуальное окружение:
python -m venv venv
Windows:
venv\Scripts\activate # Windows
Linux/Mac:
source venv/bin/activate # Linux/Mac
- Установите зависимости:
pip install django pillow
- Настройте переменные окружения:
Скопируйте шаблон и настройте:
cp .env.example .env
Отредактируйте .env:
# Admin Credentials
ADMIN_USERNAME=admin
ADMIN_PASSWORD=ваш_пароль
ADMIN_EMAIL=admin@uvimarket.ru
# Server Port (default: 8000)
SERVER_PORT=8000
# Database Path (relative to project root or absolute path)
DATABASE_PATH=db.sqlite3
# Media Files Path (relative to project root or absolute path)
MEDIA_PATH=media
# Static Files Path (relative to project root or absolute path)
STATIC_ROOT_PATH=staticfiles
⚠️ Важно: Файл
.envдобавлен в.gitignoreи не должен попадать в репозиторий! Используйте.env.exampleкак шаблон для других разработчиков.
📁 Настройка путей
В .env можно указать кастомные пути:
Относительные пути (относительно корня проекта):
DATABASE_PATH=data/mydb.sqlite3
MEDIA_PATH=storage/media
STATIC_ROOT_PATH=storage/staticfiles
Абсолютные пути:
DATABASE_PATH=/var/lib/uvimarket/db.sqlite3
MEDIA_PATH=/var/lib/uvimarket/media
STATIC_ROOT_PATH=/var/lib/uvimarket/staticfiles
💡 По умолчанию все файлы хранятся в корне проекта.
🌐 Настройка порта
В .env можно указать порт для сервера:
SERVER_PORT=3000
🔒 CSRF Trusted Origins
Для продакшена важно настроить доверенные источники CSRF:
CSRF_TRUSTED_ORIGINS=https://*.xn--p1ai,http://*.xn--p1ai,https://*,http://*
Это решит ошибку 403 (CSRF verification failed) при доступе через HTTPS.
Запуск сервера:
# С портом из .env:
python run.py
# Свой порт (переопределяет .env):
python manage.py runserver 0.0.0.0:5000
💡 По умолчанию сервер запускается на порту 8000.
- Примените миграции:
python manage.py makemigrations
python manage.py migrate
- Создайте администратора и тестовые данные:
python setup_admin.py
- Запустите сервер:
# С портом из .env файла:
python run.py
# Или стандартным способом:
python manage.py runserver
python manage.py runserver 0.0.0.0:3000 # свой порт
- Откройте браузер:
- Сайт: http://127.0.0.1:8000/
- Админка: http://127.0.0.1:8000/admin/
📁 Структура проекта
avito2/
├── marketplace/ # Основное приложение
│ ├── models.py # Модели данных
│ ├── views.py # Представления
│ ├── forms.py # Формы
│ ├── urls.py # Маршруты
│ ├── admin.py # Админ-панель
│ ├── middleware.py # Middleware (бан пользователей)
│ ├── context_processors.py # Контекстные процессоры
│ └── migrations/ # Миграции БД
├── templates/ # HTML шаблоны
│ └── marketplace/
├── static/ # Статические файлы
│ └── css/
│ └── style.css # Стили (темная/светлая тема)
├── media/ # Загруженные файлы
│ ├── ads/ # Фото объявлений
│ ├── messages/ # Фото в сообщениях
│ └── avatars/ # Аватары пользователей
├── uvimarket/ # Настройки проекта
│ ├── settings.py
│ └── urls.py
├── .env # Переменные окружения (не в git!)
├── .gitignore
├── setup_admin.py # Скрипт настройки админа
└── manage.py
🎨 Дизайн
- Цветовая схема: черно-красно-белая
- Основные цвета:
#1e1e27— темный фон#df0139— акцентный красный#e2e2e2— светлый фон/текст#28242a— поверхности
🛡️ Модерация
Администратор может через админ-панель:
| Действие | Описание |
|---|---|
| 🔒 Бан навсегда | Полная блокировка аккаунта |
| 🔒 Бан на 1/7/30 дней | Временная блокировка |
| 🔓 Разблокировка | Снятие блокировки |
| ⚠️ Предупреждение | Добавление предупреждения |
| 📝 Редактирование | Изменение любого объявления |
| 🗑️ Удаление | Удаление объявлений/сообщений |
Заблокированные пользователи автоматически разлогиниваются.
📱 Функционал
Для пользователей:
- Регистрация и авторизация
- Подача объявлений с фотографиями
- Поиск по названию и описанию
- Фильтрация по категориям
- Внутренняя переписка с отправкой фото
- Профиль с аватаром
- Переключение темной/светлой темы
Для администратора:
- Полное управление объявлениями
- Управление пользователями (баны, предупреждения)
- Модерация сообщений
- Управление категориями
🔐 Безопасность
- Пароли хешируются Django
- CSRF-защита на всех формах
- Credentials хранятся в
.env(не в репозитории) - Middleware для автоматической блокировки
📝 Лицензия
MIT
Uvimarket © 2026