Данный проект представляет собой backend часть платформы NorthGate. Он разработан с использованием фреймворка Django, Django Rest Framework, GeoDjango и базы данных PostGIS.
-
Клонируйте репозиторий проекта.
-
Установите зависимости, используя следующие команды:
- Для локальной разработки
pip install -r requirements/dev.txt
- Для пользования
pip install -r requirements/prod.txt
-
Создайте файл
.envв корневой директории проекта и укажите необходимые переменные окружения.Пример содержимого
.env:DB_NAME=имя_базы_данных DB_USER=пользователь_базы_данных DB_PASSWORD=пароль_базы_данных DB_HOST=хост_базы_данных DB_PORT=порт_базы_данных SECRET_KEY=секретный_ключ ENVIRONMENT=development -
Примените миграции с помощью следующей команды:
python manage.py migrate
-
Запустите сервер разработки:
python manage.py runserver
В данном проекте используется база данных PostGIS. Ниже приведен пример настройки базы данных в файле settings.py:
DATABASES = {
'default': {
"ENGINE": "django.contrib.gis.db.backends.postgis",
"NAME": env("DB_NAME"),
"USER": env("DB_USER"),
"PASSWORD": env("DB_PASSWORD"),
"HOST": env("DB_HOST"),
"PORT": env("DB_PORT"),
}
}Авторизоваться в системе, получив access токен и refresh токен.
Пример CURL-запроса:
curl -X POST "http://api.northgatevologda.ru:8000/api/user/login/" \
-H "Content-Type: application/json" \
-d '{"username": "your_username", "password": "your_password"}'где username - имя
password - пароль
Зарегистрироваться в системе, получив access токен и refresh токен.
Пример CURL-запроса:
curl -X POST "http://api.northgatevologda.ru:8000/api/user/registration/" \
-H "Content-Type: application/json" \
-d '{"username": "new_username", "password": "new_password"}'где username - имя
password - пароль
Выйти из системы по access токену.
Пример CURL-запроса:
curl -X POST "http://api.northgatevologda.ru:8000/api/user/logout/" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"Обновить access токен.
Пример CURL-запроса:
curl -X POST "http://api.northgatevologda.ru:8000/api/user/token/refresh/" \
-H "Authorization: Bearer YOUR_REFRESH_TOKEN"Получить тепловую карту по городу, требуется токен для доступа.
Пример CURL-запроса:
curl -X GET "http://api.northgatevologda.ru:8000/api/get_residential_hexagons/" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-d '{"city":"city name"}'где city - название города, тепловую карту по которому необходимо получить
Получить все дома в заданном городе
Пример CURL-запроса:
curl -X GET "http://api.northgatevologda.ru:8000/api/get_facilities/" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-d '{"city":"city name"}'где city - название города, дома в котором необходимо получить
Получить рекомендацию по размещению парков в заданном городе
Пример CURL-запроса:
curl -X GET "http://api.northgatevologda.ru:8000/api/get_recommendation_placement_parks/" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-d '{"city":"city name"}'где city - название города, дома в котором необходимо получить
Получение обьектов туризма в радиусе
Пример CURL-запроса:
curl -X POST "http://api.northgatevologda.ru:8000/api/object_tourism" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-d '{"center_lat":"5343335.558077131", "center_lon": "6106854.834885075", "radius": "100"}'где center_lat - широта центра,
center_lon - долгота центра,
radius - радиус
Параметры используются для получения обьектов в определенных области на карте
Получение координат по названию обьекта
Пример CURL-запроса:
curl -X POST "http://api.northgatevologda.ru:8000/api/get_coordinates/?geocode=НАЗВАНИЕ ОБЬЕКТА" \где geocode - название обьекта, координаты которого необходимо получить
Получение обьектов туризма в радиусе
Пример CURL-запроса:
curl -X POST "http://api.northgatevologda.ru:8000/api/get_location_name/?lat=ШИРОТА&lon=ДОЛГОТА"где lat - широта, lon - долгота обьекта, название которого необходимо получить
Для удобства развертывания проекта существует файл docker-compose.yml, который описывает конфигурацию контейнеров Docker.
version: '3.9'
services:
backend:
build: .
command: bash -c "python manage.py migrate & gunicorn -w 3 config.wsgi --bind 0.0.0.0:8000"
volumes:
- .:/app
ports:
- "8000:8000"Необходимо в корне проекта при DEBUG создать .env файл со всеми необходимыми переменными окружения.