Что такое django в python
Перейти к содержимому

Что такое django в python

  • автор:

Что такое 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 — самый быстрый фреймворк на диком западе

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

Что такое фреймворк Django

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

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

Официальный сайт проекта описывает Django так: “Это высокоуровневый Python фреймворк, который помогает разработчикам быстро создавать чистый и практичный код. Созданный опытными разработчиками, Django берет на себя большую часть хлопот веб-разработчика. Вы можете создавать приложения, не изобретая велосипед. Фреймворк бесплатный и с открытым исходным кодом”.

Главные преимущества Django

Как показывают данные Stack Overflow, Django входит в десятку самых любимых разработчиками фреймворков. За что программисты ценят и любят Django?

Самый быстрый и простой фреймворк

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

самые популярные фреймворки, Django в первой десятке

Основные преимущества Django:

  • Простой синтаксис;
  • Собственный веб-сервер;
  • Есть все необходимое для решения типовых задач;
  • Библиотеки HTTP;
  • Поддержка промежуточного программного обеспечения.

С Django вы в безопасности

Защита данных — один из главных приоритетов для создателей Django. Этот фреймворк имеет одну из лучших систем безопасности и помогает программистам избежать таких проблем, как кликджекинг, межсайтового скриптинга (XSS атак) или внедрения SQL-кода. Django всегда оперативно выпускает новые патчи, устраняющие слабые места в системе безопасности. Обычно именно Django первыми реагируют на уязвимости в системе и предупреждают о них другие фреймворки.

Дружное сообщество пользователей

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

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

Фреймворк подходит для работы с любыми проектам

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

Где используют фреймворк Django

Впервые Django впервые создан для поддержки веб-приложения газеты Lawrence Journal-World. Он с легкостью обрабатывал тексты, мультимедийные файлы и пользовательский трафик. По сути, Django поддерживает веб-сайты любого профиля: электронная коммерция, социальные сети и многое другое вы сможете создать с помощью этого фреймворка.

Вот примеры проектов, которые вы можете разработать с помощью фреймворка:

  • Встроенные кастомные CRM-системы для внутренних данных;
  • Системы B2B CRM для взаимодействия между предприятиями;
  • Высоконагруженные системы бронирования или торговые платформы;
  • Мобильные приложения для Android и iOS, поддерживающие веб-приложения;
  • Системы для оценки недвижимости;
  • Системы управления документами;
  • Платформы для решения юридических вопросов, например, проверка условий ипотеки и статуса аренды.

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

  • Систему рассылки уведомлений пользователям;
  • Систему фильтрации с продвинутой логикой и динамически меняющимися правилами;
  • Инструменты анализа данных;
  • Панель администратора;
  • Систему проверки по фотографиям;
  • И еще много полезных функций, которые сложно описать в одной статье.

Лучшие сайты и приложения получаются на Django?

Django — надежный и простой в использовании фреймворк. Сайты и веб-приложения спроектированные с его помощью обрабатывают огромные объемы текстового и медиа контента, легко справляясь даже с большим трафиком посетителей. Django экономит время разработчикам и позволяет создавать на Python новые элементы, а не возиться с написанием уже существующих. Именно поэтому такие компании-гиганты как Instagram, Spotify, Dropbox, Pinterest или Reddit используют его для своих сайтов и веб-приложений.

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.

Что же такое Django?

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

Чтобы найти простое объяснение и понять 10 минутный урок, приходилось несколько часов серфить интернет и потеть над кодом, выявляя правильный путь исправления ошибок. Везде говорят, что в первую очередь нужно учиться искать информацию в интернет. Но сейчас, когда я изучаю Django, даже «перекурив» весь русскоязычный мануал, я не понял ничего. В каждом предложении нужно «гуглить» термины. В сотрудничестве с ИИ я попробовал дать простое объяснение, которое поймет даже первоклассник.

Я только учусь и курс Django пройден наполовину. Все это сделано для тех, у кого тоже возникли трудности.

Что такое джанго

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

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

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

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

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

Что такое проект джанго

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

  1. Когда мы говорим о проекте Django, давай вообразим, что это сам интернет-магазин в целом. В нем мы можем купить товары и просмотреть информацию о них.
  2. Теперь представьте, что у нас есть несколько разных приложений, которые делают разные вещи внутри этого интернет-магазина.
    • Одно из таких приложений может быть «Каталог товаров». Здесь мы можем просмотреть список всех товаров, их названия, изображения и цены. Это как книжка с полным списком товаров в магазине.
    • Еще одно приложение может быть «Корзина покупок». Здесь мы можем добавлять товары в нашу корзину, изменять количество товаров и видеть общую стоимость наших покупок. Это как корзина, в которой мы кладем товары, пока не решим купить их окончательно.
    • И еще одно приложение может быть «Оформление заказа». Здесь мы можем указать наш адрес доставки и подтвердить наш заказ. Это как заполнение специальной формы, чтобы магазин знал, куда доставить наши покупки.
  3. Внутри каждого приложения у нас есть файлы, которые делают разные вещи:
    • У «Каталога товаров» есть файлы, которые описывают модели товаров (как они выглядят и что имеют), представления (как мы показываем список товаров пользователю) и шаблоны HTML (как страница с товарами выглядит).
    • У «Корзины покупок» также есть файлы, которые описывают модели корзины и элементов корзины, представления для добавления/удаления товаров из корзины и шаблоны HTML для отображения корзины.
    • У «Оформления заказа» есть файлы, которые описывают модели заказов и информации о доставке, представления для оформления заказа и шаблоны HTML для отображения формы оформления заказа.
  4. Все эти файлы работают вместе, чтобы создать полноценный интернет-магазин. Они сообщаются друг с другом и используют функции Django, чтобы обрабатывать запросы пользователей и отображать нужные страницы.

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

От запроса до отрисовки страницы

Вот основные этапы и внутренние действия, которые происходят при обработке запроса и отрисовке страницы в Django:

  1. Пользователь открывает браузер и вводит адрес веб-сайта (URL) в строке поиска.
  2. Браузер отправляет запрос на сервер, где расположен веб-сайт.
  3. Сервер получает этот запрос и передает его в Django.
  4. Django получает запрос и смотрит на URL, чтобы понять, какая страница должна быть показана.
  5. Django проверяет файл urls.py в своей структуре проекта, чтобы найти соответствующий URL-шаблон для этой страницы.
  6. Когда Django находит соответствующий URL-шаблон, он вызывает соответствующую функцию представления (view function).
  7. Функция представления обрабатывает запрос и выполняет все необходимые действия, такие как получение данных из базы данных или выполнение бизнес-логики.
  8. Если данные нужны для отображения страницы, Django может использовать модели данных и базу данных для извлечения этих данных.
  9. Далее Django использует шаблон HTML, который соответствует этой странице, чтобы создать окончательную HTML-страницу.
  10. Django заполняет шаблон данными, которые были получены из базы данных или обработаны функцией представления.
  11. Окончательная HTML-страница готова и возвращается обратно на сервер.
  12. Сервер отправляет эту HTML-страницу обратно в браузер пользователя.
  13. Браузер получает HTML-страницу и начинает ее отображать, показывая пользователю содержимое страницы, такое как текст, изображения и ссылки.

Вот таким образом происходит процесс от запроса до отрисовки страницы в Django!

Структура стандартного простого проекта

Вот пример структуры файлов интернет-магазина в Django:

myshop/ ├── manage.py ├── myshop/ │ ├── __init__.py │ ├── settings.py │ ├── urls.py │ └── wsgi.py ├── catalog/ │ ├── migrations/ │ ├── __init__.py │ ├── admin.py │ ├── models.py │ ├── views.py │ └── templates/ │ └── catalog/ │ ├── product_list.html │ └── product_detail.html ├── cart/ │ ├── __init__.py │ ├── models.py │ ├── views.py │ └── templates/ │ └── cart/ │ └── cart.html └── checkout/ ├── __init__.py ├── models.py ├── views.py └── templates/ └── checkout/ └── order_confirmation.html

Теперь давай объясню, за что отвечает каждый файл:

  1. manage.py : Это скрипт для управления Django проектом. Он позволяет выполнять различные команды, такие как запуск сервера или выполнение миграций базы данных.
  2. myshop/ (каталог): Это основной каталог проекта Django.
    • __init__.py : Пустой файл, который указывает на то, что эта директория является пакетом Python.
    • settings.py : Файл настроек проекта, содержащий информацию о базе данных, статических файлах, шаблонах и других параметрах.
    • urls.py : Файл URL‑маршрутов проекта, определяющий, какие представления (views) будут обрабатывать запросы для каждого URL‑адреса.
    • wsgi.py : Файл для настройки WSGI‑совместимого сервера (Web Server Gateway Interface), который позволяет запускать Django приложение на веб‑сервере.
  3. catalog/ : Приложение «Каталог товаров».
    • migrations/ : Директория, содержащая миграции базы данных, которые определяют структуру таблиц и схемы данных.
    • __init__.py : Пустой файл, указывающий на то, что эта директория является пакетом Python.
    • admin.py : Файл, определяющий административный интерфейс для управления товарами.
    • models.py : Файл, содержащий модели данных, такие как классы для товаров или категорий.
    • views.py : Файл, содержащий представления (views) для отображения страниц с товарами.
    • templates/ : Директория, содержащая HTML‑шаблоны для визуального оформления страниц.

cart/ : Приложение «Корзина покупок».

  • __init__.py : Пустой файл, указывающий на то, что эта директория является пакетом Python.
  • models.py : Файл, содержащий модели данных, такие как классы для корзины покупок или элементов корзины.
  • views.py : Файл, содержащий представления (views) для добавления товаров в корзину, изменения количества и оформления заказа.
  • templates/ : Директория, содержащая HTML‑шаблоны для визуального оформления страниц корзины.
  1. checkout/ : Приложение «Оформление заказа» (продолжение).
    • models.py : Файл, содержащий модели данных, такие как классы для заказов или информации о доставке.
    • views.py : Файл, содержащий представления (views) для оформления заказа и подтверждения заказа.
    • templates/ : Директория, содержащая HTML‑шаблоны для визуального оформления страниц оформления заказа.

Это лишь пример структуры интернет-магазина в Django, и в реальном проекте может быть больше файлов и каталогов, в зависимости от функциональности сайта.

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

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