Учебники

Django Framework

В этой главе мы подробно обсудим Django Framework.

Django — это веб-фреймворк MVT, который используется для создания веб-приложений. Огромный веб-фреймворк Django содержит так много «включенных батарей», что разработчики часто удивляются тому, как все удается работать вместе. Принцип, лежащий в основе добавления такого количества батарей, заключается в том, чтобы иметь общие веб-функции в самой структуре, а не добавлять последние в качестве отдельной библиотеки.

Одной из основных причин популярности фреймворка Django является огромное сообщество Django. Сообщество настолько велико, что ему был посвящен отдельный веб-сайт, на котором разработчики со всех уголков разработали сторонние пакеты, включающие аутентификацию, авторизацию, полноценные CMS-системы на основе Django, дополнения для электронной коммерции и так далее. Существует высокая вероятность того, что то, что вы пытаетесь разработать, уже кем-то разработано, и вам просто нужно включить это в свой проект.

Почему вы должны использовать Django?

Django разработан таким образом, что побуждает разработчиков разрабатывать сайты быстро, чисто и с практичным дизайном. Практический подход Django к выполнению задач — это то, что выделяет его из толпы.

Если вы планируете создать настраиваемое приложение, такое как веб-сайт социальных сетей, Django — одна из лучших платформ для рассмотрения. Сила Django заключается в его взаимодействии между пользователями или его способности делиться различными типами медиа. Одним из больших преимуществ django является его способность использовать обширную поддержку сообщества, которая дает вам настраиваемые сторонние готовые плагины для ваших приложений.

Ниже приведены десять основных причин выбрать Django для веб-разработки —

питон

Python, пожалуй, один из самых простых языков программирования для изучения из-за его простых языковых конструкций, структуры потока и простого синтаксиса. Он универсален и поддерживает веб-сайты, настольные приложения и мобильные приложения, встроенные во многие устройства, и используется в других приложениях в качестве популярного языка сценариев.

Аккумуляторы включены

Django поставляется с общими библиотеками, которые необходимы для создания общих функций, таких как маршрутизация URL-адресов, аутентификация, объектно-реляционное отображение (ORM), система шаблонов и миграция db-схемы.

Встроенный админ

Django имеет встроенный интерфейс администрирования, который позволяет вам управлять вашими моделями, полномочиями пользователей / групп и управлять пользователями. При наличии интерфейса модели нет необходимости в отдельной программе администрирования базы данных для всех функций, кроме расширенных.

Не мешает

Создание приложения Django не добавляет шаблонов и лишних функций. Там нет обязательного импорта, сторонних библиотек и XML-файлов конфигурации.

Масштабируемость

Django основан на шаблоне проектирования MVC. Это означает, что все сущности, такие как db (база данных), внутренний и внешний код, являются отдельными сущностями. Django позволяет нам отделять код от статического носителя, включая изображения, файлы, CSS и JavaScript, которые составляют ваш сайт.

Django поддерживает полный список сторонних библиотек для веб-серверов, кеширования, управления производительностью, кластеризации и балансировки. Одним из преимуществ Django является поддержка основных приложений и служб электронной почты и обмена сообщениями, таких как ReST и OAuth.

Битва проверена

Django впервые был открыт с открытым исходным кодом в 2005 году. После 12 лет роста Django теперь не только управляет веб-сайтами публикации новостей, но также управляет всеми или частью крупных глобальных предприятий, таких как Pinterest, Instagram, Disqus, Bitbucket, EventBrite и Zapier. Это делает его надежной и надежной веб-средой для работы.

Огромная поддержка пакетов

Благодаря широкой поддержке сообщества и огромной сети разработчиков существует высокая вероятность того, что все, что вы собираетесь сделать, могло быть сделано раньше. Большое международное сообщество разработчиков вносит свой вклад в сообщество, выпуская свои проекты в виде пакетов с открытым исходным кодом.

Одним из таких репозиториев этих проектов является сайт Django Package. В настоящее время пакеты Django содержат более 3400 приложений, сайтов и инструментов Django, которые можно использовать в наших проектах Django.

Активно развивается

Одним из самых больших рисков, связанных с проектом с открытым исходным кодом, является его устойчивость. Мы не можем быть уверены, что это продлится долго.

С Django такого риска нет, так как ему 12 лет. Его постоянные выпуски, новые / лучшие версии и активное сообщество растут с каждым днем ​​благодаря большой основной команде добровольных участников, которые поддерживают и улучшают базу кода каждый день.

Стабильные релизы

Проекты с открытым исходным кодом, такие как Django, во многих случаях активно разрабатываются и более безопасны, чем конкурирующее проприетарное программное обеспечение, так как многие разработчики разрабатывают и тестируют его каждый день. Однако недостатком проекта с открытым исходным кодом является отсутствие стабильной базы кода для коммерчески жизнеспособной разработки.

В Django у нас есть версии программного обеспечения с долгосрочной поддержкой (LTS) и определенный процесс выпуска, как показано на рисунке ниже —

Стабильные релизы

Первоклассная документация

С самого первого выпуска разработчики Django позаботились о том, чтобы были доступны надлежащие исчерпывающие документы, и учебники легко понять.

Кто использует Django?

Из-за уникальной силы Django существует множество популярных веб-сайтов, которые построены на Python поверх фреймворка Django. Ниже приведены некоторые из основных сайтов, которые полностью или частично построены на основе Django.

Disqus

Это один из самых популярных сайтов для размещения блогов в мире. Его легко интегрировать с большинством популярных CMS (систем управления контентом), таких как WordPress и многими другими, через Disqus. Работая с более чем 50 миллионами пользователей, Django может удовлетворить владельцев сайтов, чтобы охватить их сообщества.

Disqus

Лук

Сайт Onion, который предоставляет онлайн-площадку для их сатирической газеты, Django обеспечивает основу для этого.

Лук

Bitbucket

Bitbucket похож на GitHub, сервис хостинга репозитория контроля версий. Единственное отличие между Bitbucket и GitHub состоит в том, что Bitbucket размещает ртутные репозитории, тогда как GitHub размещает git-репозитории. Поскольку миллионы пользователей связаны с Bitbucket, и все службы, предоставляемые Bitbucket (например, создание репозитория, передача вашего кода, добавление соавторов, фиксация, запрос на извлечение и т. Д.), Должны быть стабильными. Джанго отвечает за запуск сайта битбакета.

Bitbucket

Instagram

Instagram — это приложение для социальных сетей, созданное специально для тех, кто любит делиться фотографиями и видео со всеми своими друзьями. В настоящее время в Instagram много знаменитостей, чтобы оставаться ближе к своим фанатам. Фреймворк Django также работает с Instagram.

Instagram

Mozilla Firefox

Вторым по популярности браузером в мире после Google Chrome является браузер Mozilla. Теперь страница помощи Mozilla построена с использованием фреймворка Django.

Mozilla Firefox

Pinterest

Миллионы пользователей по всему миру открывают для себя новые идеи и вдохновение от Pinterest. Pinterest использует для запуска фреймворк Django (внесение изменений в соответствии с их требованиями).

Pinterest

НАСА

Официальный сайт Национальной администрации по аэронавтике и исследованию космического пространства — это место, где миллионы пользователей могут посетить и проверить новости, изображения, видео и подкасты, предоставленные премьер-агентством. Джанго разрабатывает некоторые специфические части официального сайта НАСА.

НАСА

The Washington Post

Если в мире есть одна влиятельная газета, то это, безусловно, «Вашингтон пост». Сайт «Вашингтон Пост» — чрезвычайно популярный источник новостей в Интернете, сопровождающий их ежедневные газеты. Огромное количество просмотров и трафика легко обрабатывается веб-фреймворком Django.

Вашингтон Пост

Reddit Подарки

Широко популярный веб-сайт Reddit запустил онлайн-платформу анонимного обмена подарками и встречи под названием Reddit Gifts. Сайт связывает пользователей со всего мира и облегчает обмен подарками между ними. Веб-фреймворк Django поддерживает свои функциональные возможности.

Reddit Подарки

Prezi

Prezi — это облачная альтернатива Microsoft PowerPoint, построенная на платформе Django. Сайт предоставляет виртуальный холст, который можно манипулировать и увеличивать и уменьшать. Это обеспечивает полный вид презентации, а не отдельные слайды.

Prezi

Установка и создание проекта и приложения Django

Перед установкой Django мы должны убедиться, что Python установлен. Предполагая, что вы используете virtualenv, достаточно простой установки pj django.

Установка виртуальной среды и Django

Ниже приведен процесс установки виртуальной среды и Django в вашей среде Windows —

Виртуальная среда

Чтобы проверить, правильно ли установлен Django, введите код, приведенный ниже —

Установить Django

Создание проекта Django

После завершения установки нам нужно создать проект Django.

Выполнение команды ниже на вашем компьютере с Windows создаст следующий проект django —

django-admin startproject my_project_name

Проект ДжангоСоздание проекта Django

Набрав dir, вы увидите один новый файл и один новый каталог, как показано выше.

manage.py — manage.py — исполняемый из командной строки файл Python, который является просто оболочкой для django-admin. Это помогает нам управлять нашим проектом, что подразумевается и в его названии.

После этого он создал каталог myFirstDjangoProject внутри myFirstDjangoProject, который представляет корневой каталог конфигурации для нашего проекта. Давайте исследовать это намного глубже.

Настройка Django

Называя каталог myFirstDjangoProject «корневым каталогом конфигурации», мы подразумеваем, что этот каталог содержит файлы, необходимые для общей настройки нашего проекта Django. Практически все, что находится за пределами этого каталога, будет сосредоточено исключительно на «бизнес-логике», связанной с моделями проекта, представлениями, маршрутами и т. Д. Все точки, которые связывают проект вместе, приведут сюда.

Настройка Django

  • __init__.py — Это пустое и превращает каталог в импортируемый пакет Python.

  • settings.py — Как следует из названия, это место, где будет установлено большинство элементов конфигурации.

  • urls.py — URL-адреса устанавливаются с помощью urls.py. При этом нам не нужно явно писать каждый URL для проекта в этом файле. Тем не менее, мы должны сообщить Django о том, где были объявлены URL-адреса (т. Е. Нам нужно связать другой URL-адрес в urls.py).

  • Wsgi.py — это приложение, помогающее в работе, и аналогично другим приложениям, таким как Flask, Tornado, Pyramid, которые предоставляют некоторый объект «app».

__init__.py — Это пустое и превращает каталог в импортируемый пакет Python.

settings.py — Как следует из названия, это место, где будет установлено большинство элементов конфигурации.

urls.py — URL-адреса устанавливаются с помощью urls.py. При этом нам не нужно явно писать каждый URL для проекта в этом файле. Тем не менее, мы должны сообщить Django о том, где были объявлены URL-адреса (т. Е. Нам нужно связать другой URL-адрес в urls.py).

Wsgi.py — это приложение, помогающее в работе, и аналогично другим приложениям, таким как Flask, Tornado, Pyramid, которые предоставляют некоторый объект «app».

Установка настроек

Взглянув внутрь settings.py, вы увидите его значительный размер — и это только значения по умолчанию. Другие вещи, о которых нам нужно позаботиться, — это статические файлы, база данных, медиа-файлы, интеграция в облако или другие десятки способов настройки проекта Django. Давайте разберемся в некоторых моментах, упомянутых в файле settings.py —

  • BASE_DIR — это полезно для поиска файлов. Внутри файла setting.py параметр BASE_DIR устанавливает абсолютный путь к базовому каталогу.

  • SECRET_KEY — используется для создания хэшей. В общем, мы использовали secret_key для файлов cookie, сессий, защиты csrf и токенов авторизации.

  • DEBUG — Мы можем настроить его на запуск проекта в режиме разработки или в режиме производства.

  • ALLOWED_HOSTS — Мы предоставляем список имен хостов, через которые обслуживается наше приложение. В режиме разработки установить необязательно; однако в производственной машине нам нужно установить наш проект Django.

  • INSTALLED_APPS — это список «приложений» Django, которые в настоящее время установлены и работают в нашем проекте Django. Встроенный Django предоставляет шесть установленных приложений следующим образом:

    • ‘django.contrib.admin’

    • ‘django.contrib.auth’

    • django.contrib.

    • django.contrib.sessions

    • django.contrib.messages

    • django.contrib.staticfiles

  • СРЕДНЕЕ ОБЕСПЕЧЕНИЕ — Это помогает нашему проекту Django работать. Это класс Python, который подключается к обработке запросов / ответов django.

  • ШАБЛОНЫ — Он определяет, как документ должен отображаться в веб-интерфейсе. Шаблоны Django используются для создания любого текстового формата.

  • WSGI_APPLICATION — Любой настроенный нами сервер должен знать, где находится файл WSGI. Если вы используете внешний сервер, он будет смотреть в своих настройках. По умолчанию он указывает на объекты в wsgi.py.

  • БАЗЫ ДАННЫХ — Он устанавливает базы данных, к которым в настоящее время обращается наш проект Django. Обязательно установить базу данных по умолчанию. В случае, если мы устанавливаем базу данных по своему выбору, нам нужно упомянуть несколько вещей, связанных с базой данных, таких как — HOST, USER, PASSWORD, PORT, NAME базы данных и соответствующий ENGINE.

  • STATIC_URL — это URL-адрес, используемый при обращении к статическим файлам, расположенным в STATIC_ROOT. По умолчанию это None.

BASE_DIR — это полезно для поиска файлов. Внутри файла setting.py параметр BASE_DIR устанавливает абсолютный путь к базовому каталогу.

SECRET_KEY — используется для создания хэшей. В общем, мы использовали secret_key для файлов cookie, сессий, защиты csrf и токенов авторизации.

DEBUG — Мы можем настроить его на запуск проекта в режиме разработки или в режиме производства.

ALLOWED_HOSTS — Мы предоставляем список имен хостов, через которые обслуживается наше приложение. В режиме разработки установить необязательно; однако в производственной машине нам нужно установить наш проект Django.

INSTALLED_APPS — это список «приложений» Django, которые в настоящее время установлены и работают в нашем проекте Django. Встроенный Django предоставляет шесть установленных приложений следующим образом:

‘django.contrib.admin’

‘django.contrib.auth’

django.contrib.

django.contrib.sessions

django.contrib.messages

django.contrib.staticfiles

СРЕДНЕЕ ОБЕСПЕЧЕНИЕ — Это помогает нашему проекту Django работать. Это класс Python, который подключается к обработке запросов / ответов django.

ШАБЛОНЫ — Он определяет, как документ должен отображаться в веб-интерфейсе. Шаблоны Django используются для создания любого текстового формата.

WSGI_APPLICATION — Любой настроенный нами сервер должен знать, где находится файл WSGI. Если вы используете внешний сервер, он будет смотреть в своих настройках. По умолчанию он указывает на объекты в wsgi.py.

БАЗЫ ДАННЫХ — Он устанавливает базы данных, к которым в настоящее время обращается наш проект Django. Обязательно установить базу данных по умолчанию. В случае, если мы устанавливаем базу данных по своему выбору, нам нужно упомянуть несколько вещей, связанных с базой данных, таких как — HOST, USER, PASSWORD, PORT, NAME базы данных и соответствующий ENGINE.

STATIC_URL — это URL-адрес, используемый при обращении к статическим файлам, расположенным в STATIC_ROOT. По умолчанию это None.

Однако нам может понадобиться добавить путь для статических файлов. Перейдите в конец файла и просто под записью STATIC_URL добавьте новую с именем STATIC_ROOT, как показано ниже —

myFirstDjangoProject/settings.py

STATIC_URL = ‘/ static /’

STATIC_ROOT = os.path.join (BASE_DIR, «статический»)

Настройка базы данных

Существует множество различных программ для баз данных, которые могут хранить дату для вашего сайта. Мы будем использовать по умолчанию, sqlite3.

Это уже настроено в приведенной ниже части вашего myFirstDjangoProject / settings.py

DATABASES = {
   'default': {
      'ENGINE': 'django.db.backends.sqlite3',
      'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
   }
}

Чтобы создать базу данных для нашего блога, давайте запустим в консоли следующее: python manage.py migrate (мы должны находиться в каталоге myFirstDjangoProject, который содержит файл manage.py.

Если все пойдет хорошо, вы получите следующий вывод:

Настройка базы данных

Запуск веб-сервера

Вы должны быть в каталоге, который содержит файл manage.py. В консоли мы можем запустить веб-сервер, запустив python manage.py runserver следующим образом:

Веб сервер

Теперь все, что вам нужно сделать, это проверить, что ваш сайт работает. Откройте браузер (Firefox, Chrome, Safari, Internet Explorer и т. Д.) И введите этот адрес —

http://127.0.0.1:8000/

или же

http: // localhost: 8000 / # Поскольку наш веб-сервер работает только на нашей локальной машине.

Поздравляем! Вы только что создали свой первый веб-сайт и запускаете его с помощью веб-сервера!

Запуск веб-сервера

Во время работы веб-сервера вы не увидите новое приглашение командной строки для ввода дополнительных команд. Терминал будет принимать следующий текст, но не будет выполнять новые команды. Это потому, что веб-сервер постоянно работает для прослушивания входящих запросов.

Джанго Моделс

Мы пытаемся создать модель Django, которая будет хранить все сообщения в нашем блоге. Но чтобы убедиться, что это работает, нам нужно узнать об объектах.

Объекты

Объекты — это набор свойств и действий. Позвольте нам понять это на примере. Предположим, что мы хотим смоделировать кошку, мы создадим объект с именем Cat, у которого есть такие свойства, как цвет, возраст, настроение (хорошо / плохо / сонный) и владелец.

Тогда у Кошки есть некоторые действия: мурлыкать, царапать или кормить.

Cat 
-------- 
color 
age 
mood 
owner 
purr() 
scratch() 
feed(cat_food) 
CatFood 
-------- 
taste

Таким образом, в основном мы пытаемся описать реальные вещи в коде со свойствами (называемыми свойствами объекта) и действиями (называемыми методами).

Поскольку мы создаем блог, нам нужен текстовый контент и заголовок. Также необходимо указать имя автора, дату создания, а также дату публикации.

Таким образом, наш блог будет иметь следующие объекты —

Post 
-------- 
title 
text 
author 
created_date 
published_date

Также нам нужен метод, который публикует этот пост. Теперь, когда мы знаем, что такое объект, мы можем создать модель Django для нашего блога.

Модель — это особый вид объектов в Django, который сохраняется в базе данных. Мы будем хранить наши данные в базе данных SQLite.

Создание приложения

Чтобы все было понятно, мы создадим отдельное приложение внутри нашего проекта. Ниже мы попытаемся создать веб-приложение для блога, выполнив нижеприведенную простую команду.

Теперь мы заметим, что создан новый каталог myBlog, который теперь содержит несколько файлов. Каталоги и файлы в нашем проекте должны быть следующими:

Создание приложения

После создания приложения нам также нужно указать Django, чтобы оно использовалось. Мы делаем это в файле myFirstDjangoProject / settings.py.

INSTALLED_APPS = [
   'django.contrib.admin',
   'django.contrib.auth',
   'django.contrib.contenttypes',
   'django.contrib.sessions',
   'django.contrib.messages',
   'django.contrib.staticfiles',
   'myBlog',
]

Создание модели блога

В файле myBlog / models.py мы определяем все объекты, называемые моделями — это место, в котором мы будем определять наш блог.

Давайте откроем myBlog / models.py, удалим из него все и напишем код следующим образом:

Почтовая модель

Во-первых, мы импортируем некоторые функции из других файлов, вызывая их или импортируя. Таким образом, вместо того, чтобы копировать и вставлять одни и те же вещи в каждый файл, мы можем включать некоторые части из from и import .

Класс Post (models.Model) — эта строка определяет нашу модель (это объект).

  • class — это специальное ключевое слово, которое указывает, что мы определяем объект.

  • Пост — это название нашей модели. Всегда начинайте имя класса с заглавной буквы.

  • models.Model означает, что Post является моделью Django, поэтому Django знает, что она должна быть сохранена в базе данных.

class — это специальное ключевое слово, которое указывает, что мы определяем объект.

Пост — это название нашей модели. Всегда начинайте имя класса с заглавной буквы.

models.Model означает, что Post является моделью Django, поэтому Django знает, что она должна быть сохранена в базе данных.

Теперь давайте поговорим о свойствах, которые мы определили выше: заголовок, текст, дата создания, дата публикации и автор. Для этого нам нужно определить тип каждого поля.

  • models.CharField — это способ определения текста с ограниченным количеством символов.

  • Models.TextField — это для длинного текста без ограничения.

  • Models.DateTimeField — это для даты и времени.

  • Models.ForeignKey — это ссылка на другую модель.

models.CharField — это способ определения текста с ограниченным количеством символов.

Models.TextField — это для длинного текста без ограничения.

Models.DateTimeField — это для даты и времени.

Models.ForeignKey — это ссылка на другую модель.

Мы определяем функцию / метод с помощью def, а publish — это имя метода.

Методы часто что-то возвращают. Здесь, когда мы вызываем __str __ (), мы получим текст (строку) с заголовком сообщения.

Создание таблиц для моделей в вашей базе данных

Последний шаг — добавить новую модель в нашу базу данных. Во-первых, мы должны дать понять Джанго, что мы внесли некоторые изменения в нашу модель. Давайте сделаем то же самое в нашем окне консоли с командой python manage.py, чтобы выполнить миграцию myBlog, как показано ниже —

миграция

Затем Django готовит файл миграции, который мы теперь должны применить к нашей базе данных. В нашей консоли мы можем набрать: python manage.py migrate myBlog, и результат должен быть следующим:

Создание таблицы

Наша модель Post теперь находится в нашей базе данных.

Джанго Админ

Для добавления, редактирования и удаления постов, которые мы только что смоделировали, мы используем администратор Django.

Итак, давайте откроем файл myBlog / admin.py и поместим в него содержимое ниже —

Джанго Админ

Во-первых, мы импортируем (включаем) модель Post, определенную в предыдущей главе. Чтобы сделать нашу модель видимой на странице администратора, нам нужно зарегистрировать модель в admin.site.register (Post).

Чтобы войти на сайт администратора, вам нужно создать суперпользователя — учетную запись пользователя, которая контролирует все на сайте. Поэтому остановите веб-сервер и введите в командной строке python manage.py createuperuser и нажмите enter.

Создать пользователя

Итак, пришло время взглянуть на нашу модель Post. Не забудьте запустить python manage.py запустить сервер в консоли, чтобы запустить веб-сервер. Перейдите в браузер и введите адрес https://127.0.0.1:8000/admin/. Войдите с учетными данными, которые мы только что выбрали. Тогда вы должны увидеть панель администратора Django, как показано ниже:

Запустить сервер

Перейти к сообщениям и немного поэкспериментировать с ним. Вы можете добавить много сообщений в блоге и содержание из любого места. Ваш блог будет выглядеть примерно так —

Администрация Джанго

Это просто обзор Django, и мы можем создать блог с помощью всего лишь нескольких строк кода.