Простое приложение на Django.Instablog,Часть 1
В этой серии уроков я намереваюсь сделать простое приложение на Django, которое очень отдаленно напоминает Instagram. Простая версия Instagram. Это статья подготовительная, где мы создадим виртуальное окружение для нашего проекта , установим Django, создадим проект по умолчанию и опишем подробно каждый шаг.
Так я надеюсь ,что у вас установлен python3.6 и virtualenv. В качестве базы данных будем использовать Postgresql
Сперва создаем виртуальное окружение для нашего проекта. В домашней папке создаем папку env и переходим в эту папку. Далее с помощью virtualenv создаем виртуальное окружение instablog. Далее с помощью source активируем наше виртуальное окружение и установим последнюю версию Django
mkdir env
cd env
virtualenv --no-site-packages -p python3.6 instablog
source instablog/bin/activate
pip install django
Далее мы переходим в папку , где хотим создать наше приложение. Я для этого в домашней папке создал папку projects и обычно там держу свои проекты. Переходм в папку , где мы хотим создать наше приложение и выполняем следующую команду.После создания проекта мы переходим в сам проект
django-admin startproject instablog
cd instablog
После выполнения startproject у нас создалась следующая директория файлов.
instablog
├── instablog
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── manage.py
В документации подробно описано , что из себя представляет эта структура, но тут я отмечу, что:
manage.py : Скрипт , который позволяет взаимодействовать с проектом Django. С помощью этого скрипта мы будем запускать различные команды, которые запускают наш Django проект, создает и выполняет миграции и т.д.
Внутренний каталог instablog/ - это пакет Python вашего проекта. Эта папка создается по умолчанию и совпадает с названием нашего проекта. Мы можем при необходимости указать другое название для этой папки , но мы оставим как есть
instablog/__init__.py: - Пустой файл , который указывает Python, что текущий каталог является пакетом Python. Проще говоря , пакет это каталог с нашими python файлами .
instablog/settings.py : - Настройки/конфигурация проекта. В этом файле у нас содержатся стандартные настройки Django проекта , такие как , настройки для подключения базы данных, перечисляются используемые в нашем проекте приложения, контекстные процессоры которые загружаются по умолчанию и много других настроек, которые мы при необходимости будем добавлять в этот файл. Пока запомните, тут содержатся все настройки нашего сайта
instablog/urls.py: Конфигурация URL-ов для вашего проекта Django. Тут будут располагаться наши правила для url адресов, которые будут вызывать соответствующие вьюхи
instablog/wsgi.py: Точка входа вашего проекта для WSGI-совместимых веб-серверов. Пока нам этот файл не нужен. Он необходим, когда мы будем выкладывать наш проект на продашн.
Это простое описание файлов из официальной документации Django , дополненный моими комментариями. Если ничего не поняли, то не заморачивайтесь , просто продолжаем.
Вы можете запустить наш проект , с помощью команды
python manage.py runserver
Вы можете увидеть сообщение красным цветом, которое говорит нам, что нужно применить миграции приложений нашего проекта , которые у нас включены по умолчанию. Но пока не нужно их применять.Просто перейдите по адресу 127.0.0.1:8000/ и в окне браузера вы увидете
Так почему же мы не применили наши миграции? Просто мы вначале должны понять миграции каких приложений мы должны применить. Переходим в файл instablog/settings.py и находим секцию INSTALLED_APPS . Это список (надеюсь, вы знаете, что такое список(list) в python )django приложений , которые у нас включены по умолчанию
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
Мы можем отключить ненужные приложения , если нам необходимо, но я просто перечислю вкратце: 'django.contrib.admin' - это встроенная в коробку Djаngo административная панель, которая позволит нам управлять 'django.contrib.auth', - 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles',
Теперь , после того , как мы поверхностно ознакомились с приложениями, которые django использует по умолчанию , то мы можем смело применить наши миграции. Но мы не будем пока этого делать , так как мы будем создавать пользователей, а для этого мы не будем использовать стандартную джанговскую модель. Мы создадим свою модель.Об этом во второй части