19 сентября 2016 г. 23:10

121

Простое приложение на 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 использует по умолчанию , то мы можем смело применить наши миграции. Но мы не будем пока этого делать , так как мы будем создавать пользователей, а для этого мы не будем использовать стандартную джанговскую модель. Мы создадим свою модель.Об этом во второй части

comments powered by Disqus