Skip to content

Сайт "Интересные места". 28 увлекательных локаций в Москве и области. Стек: Django, Vue.js, GeoJSON

License

Notifications You must be signed in to change notification settings

stasyao/moscow_places

Repository files navigation

PEP8

Сайт "Интересные места"

Что такое и где посмотреть

Сайт — размеченная географическая карта. При клике по разметке появляется описание локации и карусель из ее фотографий.

Заглядывайте сюда: https://tomiddle.pythonanywhere.com (сайт оптимизирован как под десктопы, так и мобилки).

image

Контент взят с 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 Bashsh 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, по которому находится файл.

About

Сайт "Интересные места". 28 увлекательных локаций в Москве и области. Стек: Django, Vue.js, GeoJSON

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published