Джанго что это
Перейти к содержимому

Джанго что это

  • автор:

Django

Django («Джанго») — это свободный фреймворк для разработки быстрых и безопасных веб-приложений и сайтов на языке Python. Использует шаблон проектирования MVC.

Освойте профессию
«Fullstack-разработчик на Python»

Django создали в 2003–2005 годах веб-программисты онлайн-версии Lawrence Journal-World Адриан Головати и Саймон Уиллисон. Фреймворк назван в честь французского гитариста-виртуоза Джанго Рейнхардта (Рана Ренара). Первая версия опубликована в 2005 году. С тех пор фреймворк обновляется 1–2 раза в год. С 2008 года поддержкой и развитием занимается организация Django Software Foundation (DSF).

Python-разработчик

Освойте Python, самый популярный язык программирования

dffsdd (3)

Как работает Django

Как и любой другой фреймворк, «Джанго» — это программная платформа (каркас), на который разработчик «навешивает» дополнительные компоненты приложения, например:

  • интерфейс пользователя;
  • скрипты (сценарии) работы элементов приложения/сайта;
  • программные библиотеки;
  • мультимедийный контент (фото, видео, аудио);
  • модули безопасности;
  • базы данных и т.д.

Фреймворк отвечает за базовые аспекты работы продукта. А подключаемые (сменные) модули — за специфичные функции конкретного приложения.

Использование фреймворков позволяет:

  • ускорить разработку;
  • упростить поддержку;
  • избежать ошибок в работе приложения.

Способ организации кода «Модель–представление–контроллер» (MVC)

  • Модель — бизнес-логика, то есть совокупности методов, правил и ограничений работы с данными.
  • Представление — компонент, отображающий пользователю данные в зависимости от изменения модели.
  • Контроллер — программный посредник, обрабатывающий действия пользователя и сообщающий модели, как она должна измениться.

Контроллер классической модели MVC примерно соответствует уровню, который в Django называется представлением (англ. View), а презентационная логика представления реализуется в Django уровнем шаблонов (англ. Template). Поэтому архитектуру Django часто называют «Модель–шаблон–представление» (MTV):

  • модель по-прежнему отвечает за работу с данными (доступ, обработку, проверку и т.д.);
  • шаблоны определяют, как будет отображаться информация;
  • представление описывает, какие именно данные будут показываться пользователю.

Принцип повторяет концепцию MVC, поэтому Django относится к MVC-совместимым платформам.

Станьте Fullstack-разработчик на Python и найдите стабильную работу
на удаленке

Концепция DRY (Don’t repeat yourself — «Не повторяйся»)

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

Использование независимых (отчуждаемых и подключаемых) компонентов

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

Структура Django

Базовая структура фреймворка включает следующие компоненты:

  • URL-маршрутизаторы, перенаправляющие HTTP-запрос от браузера или любого иного веб-клиента в представления;
  • представление, которое обрабатывает запрос, обращается к модели и сообщает ей, какие именно данные из БД нужно задействовать, чтобы удовлетворить запрос;
  • модель (менеджер базы данных, ORM), «вытаскивающую» нужную информацию из БД и передающую ее представлению;
  • HTML-шаблоны, которые используются представлением для демонстрации пользователю полученных от модели данных.

Примерная схема работы приложения на Django:

В структуру Django входят узкоспециализированные модули и функции, в том числе:

  • веб-сервер для разработки и тестирования продукта;
  • встроенный диспетчер для обмена событиями между компонентами приложения с помощью установленных сигналов;
  • система интернационализации, адаптирующая Django к различным языковым и культурным регионам;
  • встроенные модули аутентификации и авторизации, а также функция подключения аналогичных внешних блоков;
  • фильтры для дополнительной обработки запросов (кеширования, сжатия, перенаправления и т.д.);
  • интерфейс администратора для добавления, редактирования, удаления содержимого приложения/сайта;
  • интерфейс внутренней платформы тестирования Python;
  • инструменты для комментирования;
  • модуль защиты от межсайтовых скриптов, взлома пароля и других распространенных типов сетевых атак.

Благодаря открытому коду функционал Django можно расширить за счет внешних программных пакетов. Их перечень и описание возможностей публикуются на сайте www.djangopackages.com.

Профессия / 12 месяцев
Fullstack-разработчик на Python

Создавайте веб-проекты самостоятельно

dffsdd (2)

Преимущества Django

Полнота

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

Универсальность

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

Надежность

Django поддерживается и развивается Django Software Foundation, а также сообществом сторонних разработчиков. Фреймворк обновляется и совершенствуется, проверяется на ошибки. Созданные приложения стабильные и содержат меньше багов по сравнению с разработанными на других фреймворках, CRM или написанными с нуля.

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

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

Сопровождаемость

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

Безопасность

У Django есть встроенные инструменты защиты от распространенных хакерских атак. Также он позволяет эффективно распределять доступ к данным среди пользователей разного уровня. Это повышает безопасность продукта и стабильность его работы.

Станьте разработчиком на Python и решайте самые разные задачи: от написания кода до автоматизации процессов

Переносимость

Язык программирования Django — Python, адаптированный ко всем распространенным платформам. Разработанные на фреймворке приложения одинаково хорошо работают на Windows, Mac OS X и Linux-based операционных системах, а также их версиях. Django поддерживают веб-хостинги с подходящей инфраструктурой и документацией.

Открытость

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

Обширная экосистема

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

Гибкость

«Джанго» — «умеренно гибкий» фреймворк. Он предоставляет несколько инструментов для решения одной задачи и 1–2 подхода к их использованию. То есть разработчик может выбирать между различными опциями и одновременно не теряться в их многообразии.

Недостатки Django

Монолитная архитектура

«Джанго» развивается как единый и самодостаточный комплекс инструментов разработчика. Это позволяет реализовывать даже крупные проекты, не обращаясь к сторонним приложениям и сервисам, но и тормозит развитие самого фреймворка. Разработчикам приходится тратить силы на все инструменты, входящие в его ядро.

Устаревший ORM

У Django есть свой менеджер базы данных, которая позволяет работать с различными типами БД. Однако у нее отсутствуют некоторые полезные функции, которые есть в других ORM и активно используются разработчиками. Основной недостаток — отсутствие интеграции с SQLAlchemy, являющейся основным инструментом работы с базами данных на языке Python.

Отсутствие многозадачности

«Джанго» не позволяет отдельным процессам работать с несколькими запросами одновременно. Несмотря на то что разработчики пытаются решить проблему, им приходится использовать различные подходы.

Шаблон маршрутизации URL

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

Установка Django

Процесс различается в зависимости от версии фреймворка, а также аппаратной платформы и установленной операционной системы. Рассмотрим рекомендуемый способ установки Django на персональный компьютер под управлением ОС Windows.

Подготовка

Так как Django написан на языке Python, сначала нужно установить интерпретатор. Это программа, которая распознает исходный код скрипта и переводит его в машинный код (байткод), который выполняется операционной системой. Помимо интерпретатора нужно установить pip — менеджер пакетов. Часто эта программа загружается вместе с Python, но лучше проверить ее наличие, вбив в командную строку команду pip -v. Если менеджер установлен, терминал покажет ее версию, если нет — укажет, что pip не является внутренней или внешней командой, исполняемой программой или пакетным файлом. В таком случае его нужно загрузить вручную.

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

Этот этап не обязательный, но упрощающий программисту работу с Django. С помощью виртуальной среды можно запускать несколько приложений на Python независимо друг от друга. Например, если ранее был уже разработан один проект на старой версии Django, то при появлении обновленного фреймворка можно создать второй проект, не затрагивая первый. Это позволит пользоваться всеми преимуществами новой версии «Джанго», не тратя время на обновление предыдущей. Для использования виртуальной среды ее нужно предварительно активировать с помощью файла activate.bat. Это нужно делать каждый раз при работе с проектом на Django. После окончания работы виртуальную среду нужно деактивировать с помощью файла deactivate.bat.

Установка Django

После установки и активации виртуальной среды можно инсталлировать фреймворк. Для этого нужно ввести в консоль команду pip install Django. Система сама найдет, скачает и установит свежую версию фреймворка для конкретной программной и аппаратной платформы.

Читайте также Выбираем IDE: средства для программирования на Python

Настройка проекта на Django

Чтобы создать проект на Django, нужно предварительно задать специальную директорию на жестком диске, например C:\django. Далее необходимо перейти в командной строке в этот каталог, используя команду cd.

После установки Django в папке виртуальной среды появляется скрипт django-admin.py, а в ОС Windows — исполняемый файл django-admin.exe. На Windows их можно найти в подкаталоге Scripts. Скрипт django-admin включает несколько команд для управления проектом. Например, для его создания используется директива startproject. Далее работа с проектом строится по следующему алгоритму:

  • активируется заранее установленная виртуальная среда. Для удобства работы нужно присвоить ей имя;
  • с помощью команды django-admin startproject запускается сам проект, а в текущей папке появляется его подкаталог.

Проект включает следующие элементы:

  • manage.py — исполняет различные команды, в частности запускает приложение;
  • __init__.py — стандартный для Python файл, придающий папке, в которой он располагается, свойства модуля;
  • settings.py — отвечает за настройки проекта;
  • urls.py — включает шаблоны URL-адресов, чем задает систему маршрутизации;
  • wsgi.py — содержит параметры конфигурации WSGI (Web Server Gateway Interface), которые применяются при развертывании проекта.

Чтобы запустить выполнение проекта, нужно перейти в консоли к его папке и задействовать команду python manage.py runserver. После этого в командной строке отобразится адрес, на котором будет размещен проект, — как правило, http://127.0.0.1:8000/. Если ввести его в поисковую строку любого браузера, откроется содержимое по умолчанию. По сути, это уже работающий проект со стандартным базовым контентом. Дальнейшая работа будет заключаться в том, чтобы заменить содержимое на свое веб-приложение.

Когда применять и не применять Django

«Джанго» разработали программисты новостных сайтов. Это во многом определило специфику архитектуры. Фреймворк идеально подходит для создания информационных порталов, онлайн-версий печатных журналов или других цифровых СМИ. Сегодня с его помощью разрабатываются социальные сети, видеохостинги, музыкальные сервисы, поисковики и т.д. Веб-фреймворк Django используется в сайтах:

  • Instagram;
  • YouTube;
  • The Guardian;
  • Pinterest;
  • сайт NASA;
  • Mozilla;
  • The Washington Times;
  • Disqus и т.д.

Использовать Django можно, если:

  • предъявлены высокие требования к стабильности приложения и его защите от хакерских атак;
  • предполагается возможное наращивание или сокращение проекта;
  • в проекте планируется использовать различные базы данных;
  • есть ограничения по времени развертывания, а также финансовому обеспечению;
  • планируется применять в проекте передовые IT-технологии (например нейросети);
  • проект разрабатывается и поддерживается различными специалистами (группами разработчиков);
  • недостаточно опыта для разработки веб-приложений и сайтов с нуля;
  • нужна поддержка ORM, чтобы не работать напрямую с запросами к базам данных.

Выбрать другие варианты лучше:

  • при реализации проекта со сложной и разветвленной структурой, широким функционалом (но можно использовать Django для разработки его отдельных частей);
  • написании простого приложения с минимальным функционалом, не задействующим базы данных;
  • реализации проекта со специфичной архитектурой и функционалом, требующим написания кода с нуля;
  • отсутствии базовых знаний и опыта работы с Python.

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

Fullstack-разработчик на Python

Fullstack-разработчики могут в одиночку сделать IT-проект от архитектуры до интерфейса. Их навыки востребованы у работодателей, особенно в стартапах. Научитесь программировать на Python и JavaScript и создавайте сервисы с нуля.

картинка (72)

Статьи по теме:
Почему писать игры лучше на C#, а для создания крупных проектов подходит Java

Почему для больших проектов обычно выбирают Java, средних — PHP, а быстро развивающихся стартапов — Ruby или Go

Что такое Django?

Django (/ˈdʒæŋɡoʊ/ джанго) — бесплатный и свободный фреймворк для веб-приложений, написанный на Python. Фреймворк — это набор компонентов, которые помогают разрабатывать веб-сайты быстро и просто.

Каждый раз при разработке веб-сайтов требуются похожие компоненты: способ аутентифицировать пользователей (вход, выход, регистрация), панель управления сайтом, формы, инструменты для загрузки файлов и т. д.

К счастью для нас, другие люди обратили внимание на возникновение однотипных проблем при веб-разработке, так что они объединились и создали фреймворки (Django и другие), которые предлагают нам готовые шаблоны для использования.

Фреймворки существуют, чтобы облегчить процесс разработки и позволить нам не изобретать колесо.

Зачем нам нужен фреймворк?

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

Представь себе почтовый ящик (порт), который проверяется на наличие новых писем (запросов). Это делает веб-сервер. Когда письмо приходит, сервер читает его и отправляет ответ с веб-страничкой. Однако чтобы что-то отправить, нам надо это что-то иметь. И Django как раз и отвечает за создание контента, который будет отправлен в ответе.

Что происходит, когда кто-то запрашивает веб-сайт у твоего сервера?

Когда на сервер приходит запрос, он переадресуется Django, который пытается сообразить, что же конкретно от него просят. Для начала он берет адрес веб-страницы и пробует понять — что же нужно сделать. Эту часть процесса в Django выполняет urlresolver (адрес веб-сайта называется URL — Uniform Resource Locator — Единый указатель ресурсов, так что название urlresolver, resolver == распознаватель, имеет определенный смысл). Он не слишком умён, поэтому просто берет список шаблонов и пытается сопоставить их с URL. Django сверяет шаблоны сверху вниз и, если что-то совпадает, он перенаправляет запрос соответствующей функции (которая называется view).

Представь себе почтальона с письмом. Она идет вниз по улице и сверяет номера домов с адресом на письме. Если они совпадают, то она оставляет письмо. Так же работает и urlresolver!

Но самые интересные вещи происходят в функции view: мы, например, можем обращаться к базе данных за определенной информацией. Может быть, пользователь попросил изменить какую-нибудь информацию? Как будто в письме написано: «Пожалуйста, поменяйте описание моей работы.» Функция view может проверить, имеете ли вы разрешение делать это, а затем обновит описание работы и отправит обратно ответ: «Готово!». Затем функция view сгенерирует ответ, и Django сможет отправить его веб-браузеру пользователя.

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

Так что вместо погружения в пучины нюансов мы просто начнем работать с Django и познакомимся со всеми важными особенностями по мере продвижения!

results matching » «

No results matching » «

Веб-фреймворк Django (Python)

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

Требования

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

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

Примечание: Python является одним из самых доступных в чтении и понимании для новичков языком программирования. Тем не менее, если вы захотите глубже понять этот модуль, в Интернете сейчас доступны многочисленные бесплатные книги и учебные пособия (новички в программирование возможно захотят посетить Python for Non Programmers на вики-страницах python.org).

Руководство

В этой первой статье по Django мы ответим на вопрос «Что такое Django?» и сделаем обзор того, что делает этот веб-фреймворк особенным. Мы кратко рассмотрим основные особенности, включая некоторую продвинутую функциональность, на которой у нас не будет возможности подробно остановиться в этом модуле. Мы также покажем вам некоторые из основных строительных блоков приложения Django, чтобы дать вам представление о том, что он может сделать, прежде чем вы перейдёте к установке и начнёте экспериментировать.

Теперь, когда вы знаете, что такое Django, мы покажем вам, как установить и протестировать среду разработки Django для Windows, Linux (Ubuntu) и Mac OS X — какую бы операционную систему вы не использовали, эта статья должна дать вам понимание того, что вам потребуется, чтобы начать разработку Django-приложений .

Первая статья в нашей серии практических уроков объясняет, что вы узнаете, и представит обзор веб-сайта «местной библиотеки», над которым мы будем работать и развиваться в последующих статьях.

В этой статье показано, как вы можете создать проект веб-сайта «каркас» в качестве основы, после чего вы сможете заполнить параметры сайта, urls, модели, представления и шаблоны.

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

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

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

Это руководство расширяет наш сайт местной библиотеки, добавляя список и подробные страницы для книг и авторов. Здесь мы узнаем об общих представлениях на основе классов и покажем, как они могут уменьшить количество кода, который вы должны писать для случаев общего использования. Мы также перейдём к обработке URL-адресов более подробно, покажем, как выполнить базовое сопоставление шаблонов.

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

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

В этом уроке мы покажем вам, как работать с HTML Forms в Django, и в частности, самый простой способ писать формы для создания, обновления и удаления экземпляров модели. В рамках этой демонстрации мы расширим сайт местной библиотеки, чтобы библиотекари могли вносить новые книги, создавать, обновлять и удалять авторов, используя наши собственные формы (а не использовать приложение администратора).

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

Теперь вы создали (и протестировали) удивительный сайт местной библиотеки, вам захочется установить его на общедоступный веб-сервер, чтобы к нему мог получить доступ персонал библиотеки и пользователи Интернета. В этой статье представлен обзор того, как вы можете найти хост для развёртывания вашего веб-сайта и что вам нужно сделать, чтобы подготовить ваш сайт к выпуску.

Защита пользовательских данных является неотъемлемой частью любой разработки сайта. Ранее мы объяснили некоторые из наиболее распространённых угроз безопасности в статье Web security — Эта статья даёт практическую демонстрацию того, как встроенные средства защиты Django справляются с такими угрозами.

Задания

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

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

Found a content problem with this page?

  • Edit the page on GitHub.
  • Report the content issue.
  • View the source on GitHub.

This page was last modified on 3 авг. 2023 г. by MDN contributors.

Django введение

В первой статье о Django мы отвечаем на вопрос «Что такое Django?» и даём обзор того, что делает его особенным. Мы опишем основные функции, в том числе некоторые из расширенных функций, которые у нас не будет времени подробно рассмотреть в этом модуле. Мы также покажем вам некоторые основные строительные блоки приложения Django (хотя на данный момент у вас ещё не будет среды разработки для тестирования).

Требования: Базовая компьютерная грамотность. Общее понимание server-side website programming, и в частности, механики client-server interactions in websites.
Задача: Узнать, что такое Django, какие функции он предоставляет, и основные строительные блоки приложения Django.

Что такое Django?

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

Django помогает писать программное обеспечение, которое будет:

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

Django может быть (и был) использован для создания практически любого типа веб-сайтов — от систем управления контентом и wiki до социальных сетей и новостных сайтов. Он может работать с любой клиентской средой и может доставлять контент практически в любом формате (включая HTML, RSS-каналы, JSON, XML и т. д.). Сайт, который вы сейчас читаете, создан с помощью Django!

Хотя Django предоставляет решения практически для любой функциональности, которая вам может понадобиться (например, для нескольких популярных баз данных, шаблонизаторов и т. д.), внутренне он также может быть расширен сторонними компонентами, если это необходимо.

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

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

Django, по умолчанию, обеспечивает защиту от многих уязвимостей, включая SQL-инъекцию, межсайтовый скриптинг, подделку межсайтовых запросов и кликджекинг (см. Website security для получения дополнительной информации об этих атаках).

Django использует компонентную «shared-nothing» архитектуру (каждая её часть независима от других и, следовательно, может быть заменена или изменена, если это необходимо). Чёткое разделение частей означает, что Django может масштабироваться при увеличении трафика, путём добавления оборудования на любом уровне: серверы кеширования, серверы баз данных или серверы приложений. Одни из самых загруженных сайтов успешно масштабировали Django (например, Instagram и Disqus, если назвать только два из них).

Код Django написан с использованием принципов и шаблонов проектирования, которые поощряют создание поддерживаемого и повторно используемого кода. В частности, в нём используется принцип «Don’t Repeat Yourself» (DRY, «не повторяйся»), поэтому нет ненужного дублирования, что сокращает объём кода. Django также способствует группированию связанных функциональных возможностей в повторно используемые «приложения» и, на более низком уровне, группирует связанный код в модули (в соответствии с шаблоном Model View Controller (MVC) (en-US) ).

Django написан на Python, который работает на многих платформах. Это означает, что вы не привязаны к какой-либо конкретной серверной платформе и можете запускать приложения на многих версиях Linux, Windows и Mac OS X. Кроме того, Django хорошо поддерживается многими веб-хостингами, которые часто предоставляют определённую инфраструктуру и документацию для размещения сайтов Django.

Как он появился?

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

Django продолжает расти и улучшаться с момента его первого релиза (1.0) в сентябре 2008 года до недавно выпущенной версии 3.1 (2020). В каждой версии добавлены новые функциональные возможности и исправлены ошибки, начиная от поддержки новых типов баз данных, шаблонизаторов и кеширования, до добавления «общих» функций просмотра и классов (уменьшающих объём кода, который разработчики должны писать для ряда программных задач).

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

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

Насколько популярен Django?

Нет никаких доступных и окончательных оценок популярности серверных фреймворков (хотя сайты наподобие Hot Framework и пытаются оценить популярность, используя такие механизмы, как подсчёт количества проектов на GitHub и вопросов на StackOverflow для каждой платформы). Лучший вопрос — «достаточно ли Django популярен», чтобы избежать проблем непопулярных платформ. Продолжает ли он развиваться? Можете ли вы получить помощь, если вам нужно? Найдёте ли вы оплачиваемую работу, если изучите Django?

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

Django используют такие крупные сайты, как Disqus, Instagram, Knight Foundation, MacArthur Foundation, Mozilla, National Geographic, Open Knowledge Foundation, Pinterest и Open Stack (источник: обзорная страница Django).

Является ли Django гибким?

Веб-фреймворки часто можно поделить на «гибкие» и «негибкие».

Негибкие — это те, у которых есть «правильный путь» для решения какой-либо конкретной задачи. Они часто поддерживают быстрое развёртывание в определённой области (решение проблем определённого типа), потому что правильный способ сделать что-либо обычно хорошо понимается и хорошо документируется. Однако они могут быть менее гибкими при решении проблем за пределами их основной сферы и, как правило, предлагают меньше вариантов того, какие компоненты и подходы они могут использовать.

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

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

Как выглядит код Django?

На традиционном информационном веб-сайте веб-приложение ожидает HTTP-запросы от веб-браузера (или другого клиента). Когда запрос получен, приложение разрабатывает то, что необходимо на основе URL-адреса и, возможно, данных в POST или GET запросах. В зависимости от того, что требуется, далее он может читать или записывать информацию из базы данных или выполнять другие задачи, необходимые для удовлетворения запроса. Затем приложение вернёт ответ веб-браузеру, часто динамически создавая HTML-страницу для отображения в браузере, вставляя полученные данные в HTML-шаблон.

Веб-приложения, написанные на Django, обычно группируют код, который обрабатывает каждый из этих шагов, в отдельные файлы:

  • URLs: Хотя можно обрабатывать запросы с каждого URL-адреса с помощью одной функции, гораздо удобнее писать отдельную функцию для обработки каждого ресурса. URL-маршрутизатор используется для перенаправления HTTP-запросов в соответствующее представление на основе URL-адреса запроса. Кроме того, URL-маршрутизатор может извлекать данные из URL-адреса в соответствии с заданным шаблоном и передавать их в соответствующую функцию отображения (view) в виде аргументов.
  • View: View (англ. «отображение») — это функция обработчика запросов, которая получает HTTP-запросы и возвращает ответы. Функция view имеет доступ к данным, необходимым для удовлетворения запросов, и делегирует ответы в шаблоны через модели.
  • Models: Модели представляют собой объекты Python, которые определяют структуру данных приложения и предоставляют механизмы для управления (добавления, изменения, удаления) и выполнения запросов в базу данных.
  • Templates: Template (англ. «шаблон») — это текстовый файл, определяющий структуру или разметку страницы (например HTML-страницы), с полями для подстановки, которые используются для вывода актуального содержимого. View может динамически создавать HTML-страницы, используя HTML-шаблоны и заполняя их данными из модели (model). Шаблон может быть использован для определения структуры файлов любых типов, не обязательно HTML.

Примечание: Django реализует уровневую архитектуру «Model View Template (MVT)». Она имеет много общего с более известной архитектурой Model View Controller.

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

Отправка запроса в правильное view (urls.py)

Сопоставитель URL-адресов обычно содержится в файле urls.py. В примере ниже сопоставитель ( urlpatterns ) определяет список сопоставлений междумаршрутами (определёнными URL-шаблонами) и соответствующими функциями отображения (view). Если получен HTTP-запрос, который имеет URL-адрес, соответствующий определённому шаблону, то затем будет вызвана связанная функция отображения (view) и передана в запрос.

urlpatterns = [ path('admin/', admin.site.urls), path('book//', views.book_detail, name='book_detail'), path('catalog/', include('catalog.urls')), re_path(r'^([0-9]+)/$', views.best), ]

Объект urlpatterns является списком функций path() и/или re_path() (в Python списки определяются с помощью квадратных скобок, внутри которых элементы разделены запятыми и могут содержать необязательную завершающую запятую. Например: [item1, item2, item3,] ).

Первый аргумент в обоих методах — маршрут (шаблон), который будет сопоставлен. В методе path() угловые скобки используются для определения частей URL-адреса, которые будут захвачены и переданы в функцию отображения (view) в качестве именованных аргументов. Функция re_path() использует гибкий подход к сопоставлению с шаблоном, известный как регулярное выражение. Мы поговорим об этом в следующей статье!

Второй аргумент — это ещё одна функция, которая будет вызываться при сопоставлении шаблона. Обозначение views.book_detail указывает, что функция называется book_detail() и может быть обнаружена в модуле с именем views (т.е. внутри файла с именем views.py ).

Обработка запроса (views.py)

Отображения (views) — это сердце веб-приложения, принимающего HTTP-запросы от веб-клиентов и возвращающего HTTP-ответы. Между этим они используют другие ресурсы фреймворка для доступа к базам данных, шаблонам визуализации и т. д.

В приведённом ниже примере показана минимальная функция представления index() , которая могла быть вызвана нашим сопоставителем URL-адресов в предыдущем разделе. Как и все функции отображения (view), она получает объект HttpRequest в качестве параметра ( request ) и возвращает объект HttpResponse . В этом случае мы ничего не делаем с запросом, и наш ответ просто возвращает жёстко запрограммированную строку. Мы покажем вам запрос, который делает что-то более интересное в следующем разделе.

## filename: views.py (Django view functions) from django.http import HttpResponse def index(request): # Получить HttpRequest — параметр запроса # Выполнить операции, используя информацию из запроса. # Вернуть HttpResponse return HttpResponse('Hello from Django!') 

Примечание: Немного Python:

  • Модули Python это библиотеки функций, сохранённые в различных файлах, которые мы можем использовать в нашем коде. Здесь мы импортируем только объект HttpResponse из модуля django.http чтобы использовать его в нашем отображении (view): from django.http import HttpResponse . Также есть другие способы импортирования некоторых или всех объектов модуля.
  • Функции объявляются с помощью ключевого слова def , как показано выше, с именованными параметрами, перечисленными в скобках после имени функции; строка завершается двоеточием. Заметьте, что следующие строки содержат отступы. Отступы важны, так как они определяют, какие строки кода находятся внутри конкретного блока (обязательные отступы — это ключевая особенность Python и одна из причин, почему код на Python так легко читать).

Отображения (view) обычно содержатся в файле views.py.

Определение данных модели (models.py)

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

В приведённом ниже фрагменте кода показана очень простая модель Django для объекта Team . Класс Team наследуется от класса models.Model . Он определяет имя команды и командный уровень в качестве полей символов и задаёт максимальное количество символов, которые могут быть сохранены для каждой записи. Team_level может быть одним из нескольких значений, поэтому мы определяем его как поле выбора и предоставляем сопоставление между отображаемыми вариантами и хранимыми данными вместе со значением по умолчанию.

# filename: models.py from django.db import models class Team(models.Model): team_name = models.CharField(max_length=40) TEAM_LEVELS = ( ('U09', 'Under 09s'), ('U10', 'Under 10s'), ('U11', 'Under 11s'), ... #список других командных уровней ) team_level = models.CharField(max_length=3,choices=TEAM_LEVELS,default='U11') 

Примечание: Немного Python:

  • Python поддерживает «объектно-ориентированное программирование», то есть стиль программирования, в котором мы организуем наш код в объекты, которые включают связанные данные и функции для работы с этими данными. Объекты также могут наследовать / расширять / выводить из других объектов, позволяя использовать одинаковое поведение между связанными объектами. В Python мы используем ключевое слово class , чтобы определить «скелет» для объекта. Мы можем создать несколько конкретных экземпляров типа объекта на основе модели в классе. Так, например, мы имеем класс Team , который происходит от класса Model . Это означает, что эта модель будет содержать все методы модели, но мы также можем дать ей специализированные возможности. В нашей модели мы определяем поля нашей базы данных, в которой будем хранить данные, присваивая им конкретные имена. Django использует эти определения, включая имена полей, для создания основной базы данных.

Запросы данных (views.py)

Модель Django предоставляет простой API запросов для поиска в базе данных. Поиск может осуществляться по нескольким полям одновременно, используя различные критерии (такие как exact («точный»), case-insensitive («без учёта регистра»), greater than («больше чем») и т. д.), и может поддерживать сложные выражения (например, вы можете указать поиск в командах U11, у которых есть имя команды, начинающееся с «Fr» или заканчивается на «al»).

Фрагмент кода показывает функцию view (обработчик ресурсов) для отображения всех команд U09. Выделенная жирным строка показывает, как мы можем использовать модель API-запросов для того, чтобы отфильтровать все записи, где поле team_level в точности содержит текст ‘U09’ (обратите внимание, как эти критерии передаются функции filter() в качестве аргумента с именем поля и типом соответствия, разделённым двойным подчёркиванием: team_level__exact ).

## filename: views.py from django.shortcuts import render from .models import Team def index(request): list_teams = Team.objects.filter(team_level__exact="U09") context = 'youngest_teams': list_teams> return render(request, '/best/index.html', context) 

Данная функция использует функцию render() для того, чтобы создать HttpResponse , который будет отправлен назад браузеру. Эта функция является ярлыком; она создаёт HTML-файл, комбинируя указанный HTML-шаблон и некоторые данные для вставки в шаблон (предоставляется в переменной с именем « context »). В следующем разделе мы покажем как данные вставляются в шаблон для создания HTML-кода.

Вывод данных (HTML-шаблоны)

Системы шаблонов позволяют указать структуру выходного документа, используя заполнители для данных, которые будут вставлены при генерировании страницы. Шаблоны часто используются для создания HTML, но также могут создавать другие типы документов. Django «из коробки» поддерживает как собственную систему шаблонов, так и другую популярную библиотеку Python под названием Jinja2 (она также может быть использована для поддержки других систем, если это необходимо).

Фрагмент кода показывает, как может выглядеть HTML-шаблон, вызванный функцией render() из предыдущего раздела. Этот шаблон был написан с предположением, что во время отрисовки он будет иметь доступ к переменной списка, названной youngest_teams (содержащейся в контекстной переменной внутри функции render() выше). Внутри скелета HTML мы имеем выражение, которое сначала проверяет, существует ли переменная youngest_teams , а затем повторяет её в цикле for . При каждом повторе шаблон отображает значение team_name каждой команды в элементе .

Что ещё можно сделать?

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

  • Формы: HTML-формы используются для сбора пользовательских данных для обработки на сервере. Django упрощает создание, проверку и обработку формы.
  • Аутентификация пользователя и разрешения: Django включает надёжную систему аутентификации и авторизации пользователей, которая была построена с учётом безопасности.
  • Кеширование: Создание динамического контента намного более интенсивно (и медленнее), чем обслуживание статического содержимого. Django обеспечивает гибкое кеширование, чтобы вы могли хранить всю или часть отображаемой страницы, для того, чтобы она не вызывалась повторно, за исключением случаев, когда это необходимо.
  • Админ-панель: Административная панель в Django включена по умолчанию при создании приложения с использованием основного каркаса. Это упрощает управление админкой администраторам сайта для создания, редактирования и просмотра любых данных на вашем сайте.
  • Сериализация данных (преобразование в последовательную форму): Django упрощает сериализацию и обслуживание ваших данных в таких форматах как XML или JSON. Это может быть полезно при создании веб-сервисов (веб-сайтов, которые исключительно служат для использования данных другими приложениями или сайтами и сами ничего не отображают) или при создании веб-сайта, на котором клиентский код обрабатывает весь рендеринг данных.

Резюме

Поздравляем, вы завершили первый шаг в своём путешествии по Django! Теперь вы должны понимать основные преимущества Django, немного его истории, и примерно как может выглядеть каждая из основных частей приложения Django. Вы должны также изучить несколько вещей о языке программирования Python, включая синтаксис списков, функций и классов.

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

Found a content problem with this page?

  • Edit the page on GitHub.
  • Report the content issue.
  • View the source on GitHub.

This page was last modified on 3 авг. 2023 г. by MDN contributors.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *