Skip to content

Repository files navigation

AnswerHub

AnswerHub — это веб-платформа вопросов и ответов, построенная на Django. Пользователи могут задавать вопросы, отвечать на них, использовать теги для категоризации и искать по существующему контенту.

Требования

  • Python 3.10 или выше
  • PostgreSQL 14 или выше (если запускаете без Docker)
  • Docker и Docker Compose (для запуска в контейнерах)

Быстрый старт с Docker

  1. Клонируйте репозиторий:
git clone https://github.com/virsi/AnswerHub.git
cd AnswerHub
  1. Создайте файл .env из примера:
cp .env.example .env
  1. Отредактируйте .env, установив безопасный SECRET_KEY и желаемые параметры PostgreSQL:
SECRET_KEY=your-secure-secret-key-here
POSTGRES_DB=answerhub
POSTGRES_USER=postgres
POSTGRES_PASSWORD=your-secure-password
POSTGRES_HOST=db
POSTGRES_PORT=5432
  1. Запустите проект через Docker Compose:
docker-compose up -d
  1. Создайте суперпользователя:
docker-compose exec web python manage.py createsuperuser

Теперь приложение доступно по адресу: http://localhost:8000

Локальная установка (без Docker)

  1. Клонируйте репозиторий:
git clone https://github.com/virsi/AnswerHub.git
cd AnswerHub
  1. Создайте и активируйте виртуальное окружение:
python -m venv venv
source venv/bin/activate  # для Linux/MacOS
# или
venv\\Scripts\\activate  # для Windows
  1. Установите зависимости:
pip install -r requirements.txt
  1. Создайте файл .env из примера и настройте его:
cp .env.example .env
# Отредактируйте .env, указав корректные параметры подключения к вашей PostgreSQL
  1. Примените миграции:
python manage.py migrate
  1. Создайте суперпользователя:
python manage.py createsuperuser
  1. Соберите статические файлы:
python manage.py collectstatic
  1. Запустите сервер разработки:
python manage.py runserver

Приложение будет доступно по адресу: http://localhost:8000

Миграция с SQLite на PostgreSQL

Если у вас есть существующие данные в SQLite, вы можете перенести их в PostgreSQL:

  1. Создайте дамп данных из SQLite:
python manage.py dumpdata --natural-foreign --natural-primary --exclude contenttypes --exclude auth.permission --indent 2 > data.json --settings=AnswerHub.settings_sqlite
  1. Убедитесь, что PostgreSQL настроен и миграции применены:
python manage.py migrate  # или docker-compose exec web python manage.py migrate
  1. Загрузите данные в PostgreSQL:
python manage.py loaddata data.json  # или docker-compose exec web python manage.py loaddata data.json

Структура проекта

  • AnswerHub/ - основная директория проекта с настройками
  • questions/ - приложение для работы с вопросами
  • answers/ - приложение для работы с ответами
  • users/ - пользовательское приложение
  • tags/ - приложение для работы с тегами
  • static/ - статические файлы (CSS, JavaScript, изображения)
  • templates/ - HTML шаблоны
  • uploads/ - загружаемые пользователями файлы

Разработка

  1. Создайте ветку для новой функциональности:
git checkout -b feature/your-feature-name
  1. Внесите изменения и создайте коммит:
git add .
git commit -m "Добавлена новая функциональность"
  1. Отправьте изменения в репозиторий:
git push origin feature/your-feature-name

Тестирование

Запуск тестов:

python manage.py test

## Наполнение тестовыми данными

В проект добавлена management command `fill_db` для заполнения БД большим количеством тестовых записей.

Пример использования:

```bash
python manage.py fill_db 100

Аргумент ratio задаёт базовый коэффициент заполнения:

  • пользователей — ratio
  • вопросов — ratio * 10
  • ответов — ratio * 100
  • тегов — ratio
  • оценок (вопросы + ответы) — ratio * 200

ВНИМАНИЕ: при больших значениях команда создаёт большое количество записей и может занять много времени и место на диске. Рекомендуется запускать сначала с небольшим ratio (например, 1 или 5) и убедиться, что всё работает корректно.

UML диаграмма

alt text

Дополнительно

### Полезные команды Docker

- Просмотр логов: `docker-compose logs -f`
- Перезапуск сервисов: `docker-compose restart`
- Остановка: `docker-compose down`
- Пересборка: `docker-compose up -d --build`

### Работа с базой данных

- Создание новых миграций: `python manage.py makemigrations`
- Просмотр статуса миграций: `python manage.py showmigrations`
- Доступ к PostgreSQL в контейнере: `docker-compose exec db psql -U postgres`

## Возможные проблемы

1. **Ошибка подключения к базе данных**
   - Убедитесь, что PostgreSQL запущен
   - Проверьте параметры подключения в `.env`
   - При использовании Docker проверьте, что контейнер `db` работает

2. **Статические файлы не отображаются**
   - Выполните `python manage.py collectstatic`
   - Проверьте настройки `STATIC_URL` и `STATIC_ROOT` в `settings.py`

3. **Ошибки при миграции данных**
   - Убедитесь, что все зависимости установлены
   - Проверьте совместимость версий данных
   - При необходимости выполните миграцию поэтапно

## Лицензия

[MIT License](LICENSE)

## Автор

[virsi](https://github.com/virsi)

About

project for VK techpark

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages