Сайт - интерактивная карта Москвы, на которой отмечены места активного отдыха с подробными описаниями и комментариями.
Учебный проект курса "От джуна до мидла" компании Devman.
Использованная технология - Django.
- Добавление локаций, описаний и коментариев, загрузка фото через админ-панель
- Быстрое добавление списка новых локаций из файлов JSON.
- Клонируйте данный репозиторий на локальную машину, создайте виртуальное окружение и установите зависимости из файла requirements.txt.
- В корневой директории приложения создайте файл .env со следующим содержимым.
SECRET_KEY=secretvalue
DEBUG=True
Опционально: при использовании внешней базы данных добавьте переменную окружения DATABASE_URL (подробнее). При необходимости использования нестандартных названий и расположений папок для статики и медиафайлов настройте переменные STATIC_URL, STATIC_ROOT, MEDIA_URL, MEDIA_ROOT. Подробнее о настройке параметров Django читайте в документации.
- Примените миграции
python manage.py migrate
- Создайте учетную запись администратора
python manage.py createsuperuser --username admin
- Запустите сайт
python manage.py runserver
- Загрузите тестовые данные (см. раздел Использование ниже).
- Проверьте работоспособность сайта по адресу http://127.0.0.1:8000/
- Ниже приведена инструкция по деплою сайта на хостинг pythonanywhere.com. Для других хостингов ознакомьтесь с их документацией в части деплоя Django-приложений.
- Войдите в аккаунт pythonanywhere.com, при необходимости предварительно зарегистрируйтесь.
- Перейдите на страницу Consoles, в разделе Start new console нажмите Bash.
- Введите команду
git clone https://github.com/IBA20/where_to_go
Содержимое этого репозитория будет скопировано в директорию home/myusername/where_to_go, где myusername - ваш логин.
- Создайте виртуальное окружение командой
mkvirtualenv --python=/usr/bin/python3.9 myvirtualenv
- Перейдите в папку приложения и установите необходимые библиотеки
cd where_to_go
pip install -r requirements.txt
- Перейдите на страницу Web и создайте новое приложение (Add new web app). На шаге Select a Python Web framework выберите Manual configuration затем Python 3.9.
- В разделе Virtualenv введите имя виртуального окружения, созданного на шаге 5 (myvirtualenv).
- В разделе Code откройте wsgi-файл по ссылке WSGI configuration file. Удалите все, кроме раздела DJANGO. Раскомментируйте команды, откорректируйте имя директории с приложением. В итоге должно получиться примерно следующее:
import os
import sys
# assuming your django settings file is at '/home/myusername/mysite/mysite/settings.py'
# and your manage.py is is at '/home/myusername/where_to_go/manage.py'
path = '/home/myusername/where_to_go'
if path not in sys.path:
sys.path.append(path)
os.environ['DJANGO_SETTINGS_MODULE'] = 'where_to_go.settings'
# then:
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
Не забудьте сохранить файл кнопкой Save.
- На странице Files перейдите в директорию home/myusername/where-to_go и создайте файл .env со следующим содержимым.
SECRET_KEY=secretvalue
ALLOWED_HOSTS=myusername.pythonanywhere.com
Замените secretvalue на надежный секретный ключ для Django, a myusername - на ваш логин. Сохраните файл. 11. Вернитесь в Bash-консоль и ввведите команды
python manage.py collectstatic
python manage.py migrate
- Создайте учетную запись администратора
python manage.py createsuperuser --username admin
- На странице Web в разделе Static files пропишите следующее:
URL Directory
/static/ /home/myusername/where_to_go/static
/media/ /home/myusername/where_to_go/media
- В разделе Security установите Force HTTPS: Enabled. Нажмите кнопку Reload: myusername.pythonanywhere.com
- Загрузите тестовые данные (см. раздел Использование ниже) и проверьте работоспособность сайта.
- Дополнительные сведения по деплою здесь
- Опционально: для работы с внешними базами данных пропишите переменную окружения DATABASES_URL в файле .env.
- Вход в админку по адресу имя_сайта/admin.
- Быстрое добавление одной или нескольких локаций из файлов JSON:
В консоли ввести команду
python3 manage.py load_place url [url] ...
где url - ссылка на JSON файл.
Пример корректного файла JSON:
{
"title": "Экскурсионный проект «Крыши24.рф»",
"imgs": [
"https://kudago.com/media/images/place/d0/f6/d0f665a80d1d8d110826ba797569df02.jpg",
"https://kudago.com/media/images/place/66/23/6623e6c8e93727c9b0bb198972d9e9fa.jpg",
"https://kudago.com/media/images/place/64/82/64827b20010de8430bfc4fb14e786c19.jpg",
],
"description_short": "Хотите увидеть Москву с высоты птичьего полёта?",
"description_long": "<p>Проект «Крыши24.рф» проводит экскурсии ...</p>",
"coordinates": {
"lat": 55.753676,
"lng": 37.64
}
}
Тестовые данные в формате JSON
Код написан в учебных целях — это урок в курсе по Python и веб-разработке на сайте Devman.
Тестовые данные взяты с сайта KudaGo.