Сайт — размеченная географическая карта. При клике по разметке появляется описание локации и карусель из ее фотографий.
Заглядывайте сюда: https://tomiddle.pythonanywhere.com (сайт оптимизирован как под десктопы, так и мобилки).
Контент взят с KudaGo, а сам сайт разработан в рамках учебного проекта от Devman.
Стек бэкенда:
- Django
- django-admin-sortable2
- django-tinymce
- Pillow
- environs
- requests
- python-slugify
-
Глубоко кастомизированная админка: WYSIWYG-редактор; превью картинок и их автоматическая перетасовка; индивидуальные пермишены для разных групп пользователей; решение для удобного заполнения JSON-данных
-
Динамическое изменение обязательности заполнения инлайн-форм в админке
-
API для работы с GeoJSON
-
автоматизированное создание пользователей с необходимыми разрешениями
-
автоматизированная загрузка контента в модель локаций через GitHub API.
-
сортировка подгружаемых медиафайлов по тематическим папкам
На локальной машине должен быть установлен python
не ниже версии 3.8
, менеджер python-пакетов pip
, а также git
.
Достаточно скачать и запустить:
- скрипт
win_setup.sh
— пользователямWin 10
(через консольGit Bash
—sh win_setup.sh
) - скрипт
linux_setup.sh
— пользователям Линукс (sh linux_setup.sh
)
После отработки скрипта зайдите в директории с проектом и в ней:
- активируйте виртуальное окружение (
source env/Scripts/activate
наwin
или. ./env/bin/activate
наlinux
); - запустите локальный сервер
python manage.py runserver
(наlinux
черезpython3
)
Сайт с локациями будет доступен по адресу http://localhost:8000.
Кроме того, автоматически созданы учётные записи, с помощью которых можно поработать в админке(http://localhost:8000/admin):
- суперпользователь (полный доступ к админке) — логин
admin
, парольadmin
- администратор (доступ только в части работы с контентом) — логин
manager1
, парольmanager1
.
Ручной запуск ничем не отличается от запуска стандартного джанго-проекта: 1) склонировать проект; 2) установить зависимости; 3) сделать первоначальную миграцию БД.
Также в проекте несколько кастомных команд, которые помогут ускорить его развертывание:
load_places_from_github
— загрузит в БД фикстуру для 28 локаций;create_content_manager
— создаст учетную запись контент-менеджера (нужно указать юзернейм и пароль).
В проекте предусмотрены переменные SECRET_KEY, DEBUG, ALLOWED_HOSTS, DB, SECURE_SSL_REDIRECT, SECURE_HSTS_SECONDS, SECURE_HSTS_INCLUDE_SUBDOMAINS, SECURE_HSTS_PRELOAD, SESSION_COOKIE_SECURE, CSRF_COOKIE_SECURE.
Для всех переменных в config/settings.py
предусмотрены дефолтные значения, для локального запуска эти переменные задавать не требуется.
Новую локацию можно добавить как через админку, так и с помощью консольных команд.
Потребуется заполнить интуитивно понятные поля — название локации, краткое и подробное описание, долготу и широту. Также нужно прикрепить не менее 1-го изображения. Обратите внимание, что название и описание локаций не должны повторяться.
Через консоль можно скачать c Гитхаб или иного интернет-источника и записать в базу json
с данными о локации.
Json-файл должен быть следующего формата:
{
"title": "обычный текст",
"imgs": [
"url картинки 1",
"url картинки 2",
"..."
],
"description_short": "обычный текст",
"description_long": "<p>текст в html-разметке</p>",
"coordinates": {
"lng": "долгота в виде числа, например, 54.78",
"lat": "широта в виде числа, например, 55.816591"
}
}
Для загрузки из гитхаб-репозитория воспользуйтесь командой python manage.py load_places_from_github
. При этом нужно передать лишь url с директорией в гитхаб-репозитории, в которой находятся файлы.
Для загрузки json-файла из иного источника воспользуйтесь командой python manage.py load_places_from_json
. При этому нужно передать один аргумент: url, по которому находится файл.