Сайт о самых интересных местах Москвы
- Описание
- Примеры использования
- Предметная область
- Структура проекта
- Требования к окружению
- Установка
Интерактивная карта мест для организации досуга
- Программисту необходимо:
- создать суперпользователя,
- наполнить базу данных (БД).
- Контент-менеджеру/заказчику необходимо:
- получить логин и пароль у администратора инф. системы (ИС) для работы с Django admin site или создать суперпользователя самостоятельно
- помогает организовать досуг, отображая на карте замечательные места и развлечения возле дома и работы,
- предоставляет возможность:
- создать/редактировать локации,
- использовать визуальный редактор для текстовок,
- поиска локации по названию,
- создать/редактировать фото локации,
- просмотра превью фотографий локаций,
- удобно менять (drag & drop) порядок отображения фото на главной сайта,
- подсчёта фото по локациям.
- обеспечивает загрузку информации о локациях в БД, используя manage-команду,
- источник данных,
- статус проекта: учебный.
Выбор места для досуга:
Получить сырые данные о локации:
Создать/редактировать запись локации в БД:
{
"title": "Антикафе Bizone",
"imgs": [
"https://raw.githubusercontent.com/devmanorg/where-to-go-places/master/media/1f09226ae0edf23d20708b4fcc498ffd.jpg",
"https://raw.githubusercontent.com/devmanorg/where-to-go-places/master/media/6e1c15fd7723e04e73985486c441e061.jpg",
"https://raw.githubusercontent.com/devmanorg/where-to-go-places/master/media/be067a44fb19342c562e9ffd815c4215.jpg",
"https://raw.githubusercontent.com/devmanorg/where-to-go-places/master/media/f6148bf3acf5328347f2762a1a674620.jpg",
"https://raw.githubusercontent.com/devmanorg/where-to-go-places/master/media/b896253e3b4f092cff47a02885450b5c.jpg",
"https://raw.githubusercontent.com/devmanorg/where-to-go-places/master/media/605da4a5bc8fd9a748526bef3b02120f.jpg"
],
"description_short": "Настольные и компьютерные игры, ...",
"description_long": "<p>Рядом со станцией метро «Войковская» открылось антикафе ...</p>",
"coordinates": {
"lng": "37.50169",
"lat": "55.816591"
}
}
Реализована html-шаблоном и контекстом.
Тут.
Представляет собой кастомизированное приложение на базе Django admin site.
Доступна при запущенном сайте по адресу.
Формируется программным объектом JsonResponse.
Доступен при запущенном и наполненном данными сайте по адресу.
Относится к кастомному Dj-приложению places
, реализована в модуле load_place.py
.
- Django
- django-admin-sortable2
- django-cleanup
- django-tinymce
- Docker
- Docker Compose
- geojson
- Nginx
- Pillow
- PostgreSQL
- requests
- uWSGI
- Python 3.8 и выше,
- Linux/Windows,
- Переменные окружения (ПеО),
- Файлы для системы виртуализации (СВ).
Проект настраивается через ПеО, достаточно задать их в файлах .env.override
и .env.override.db
.
Передача значений ПеО происходит с использованием environs.
Среды (dev-, prod-), организованные с использованием СВ-ии, используют файлы docker-compose.dev.yml
и docker-compose.yml
.
По умолчанию проект подготовлен к запуску в prod-среде.
Ключ | Назначение | По умолчанию |
---|---|---|
ALLOWED_HOSTS |
Разрешённые хосты | - |
DEBUG |
Режим отладки | False |
SECRET_KEY |
Уникальное непредсказуемое значение | - |
FRONTEND_PART_APP_DIR |
Имя каталога с фронтенд-частью проекта | where-to-go-frontend |
STATIC_ROOT |
Имя каталога с статикой проекта | static |
STATIC_URL |
Имя path-части URL для отдачи статики | /static/ |
MEDIA_ROOT |
Имя каталога с медиа-файлами проекта | media |
MEDIA_URL |
Имя path-части URL для отдачи медиа-файлов | /media/ |
PSQL_DB_ENGINE |
Имя движка СУБД | django.db.backends.postgresql |
PSQL_DB_HOST |
Имя сервиса развёрнутого в контейнере для БД | db |
PSQL_DB_PORT |
Порт СУБД | 5432 |
PSQL_DB_NAME |
Имя БД | where_to_go |
PSQL_DB_USER |
Имя пользователя БД | proba |
PSQL_DB_PASSWORD |
Пароль пользователя БД | proba |
По умолчанию используется СУБД PostgreSQL.
Ключ | Назначение | По умолчанию |
---|---|---|
POSTGRES_USER |
Суперпользователь БД | postgres |
POSTGRES_PASSWORD |
Пароль суперпользователя БД | postgres |
- создать на основе
env.override
иenv.override.db
файлыenv
иenv.db
, - заполнить значениями ключи, у которых нет значений по умолчанию,
- переопределить значения ключей, указанных в таблице ниже,
- переименовать
docker-compose.dev.yml
вdocker-compose.yml
.
Ключ | Назначение | Должно стать |
---|---|---|
DEBUG |
Режим отладки | True |
- создать на основе
env.override
иenv.override.db
файлыenv
иenv.db
, - заполнить значениями ключи, у которых нет значений по умолчанию.
- Клонировать проект:
git clone https://github.com/Padking/where-to-go.git
cd where-to-go
- Создать каталог виртуального окружения (ВО)*, связать каталоги ВО и проекта, установить зависимости:
mkvirtualenv -p <path to python> <name of virtualenv>
setvirtualenvproject <path to virtualenv> <path to project>
pip install -r requirements_dev.txt
- Установить и настроить Docker,
- Установить и настроить Docker Compose,
- Собрать образы для сервисов проекта, запустить контейнеры с сервисами в фоновом режиме:
docker-compose build
docker-compose up -d
- Применить миграции к проекту:
docker-compose exec web python manage.py migrate --noinput
- Собрать статику для проекта:
docker-compose exec web python manage.py collectstatic --clear
- Применить фикстуру
docker-compose exec web python manage.py loaddata ./places/fixtures/db_data.json
-
Запустить сайт,
-
Cоздать суперпользователя в интерактивном режиме**:
docker-compose exec web python manage.py createsuperuser
-
Наполнить БД информацией о локациях одним из способов:
- через Django admin site:
- используя manage-команду
load_place
:- получить справку по работе с manage-командой:
docker-compose exec web python manage.py load_place --help
- получить ссылку на данными о локации описанным способом,
- заполнить БД информацией о месте:
docker-compose exec web python manage.py load_place <ссылка на данными о локации>
- совершить целевое действие,
- убедиться в отображении локаций на главной странице сайта.
-
Завершить работу сайта:
docker-compose down
* с использованием virtualenvwrapper
** для наполнения БД через Django admin site
$ docker-compose exec web python manage.py load_place --help
usage: manage.py load_place [-h] [--version] ... raw_file_url
Создаёт записи об интересных местах и их фотографиях в БД.
positional arguments:
raw_file_url URL-адрес json-файла с данными
optional arguments:
-h, --help show this help message and exit
...
$ docker-compose exec web python manage.py load_place https://github.com/devmanorg/where-to-go-places/raw/master/places/Воробьёвы%20горы.json
Интересное место и фото добавлены в БД из источника: https://github.com/devmanorg/where-to-go-places/raw/master/places/Воробьёвы%20горы.json