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

Обновлено: 03.07.2024

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

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

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

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

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

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

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

Рекомендуемое обучение Python

Курс: Python 3 для начинающих

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

В этой первой статье о Django мы отвечаем на вопрос "Что такое Django?" и дать вам обзор того, что делает эту веб-инфраструктуру особенной.

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

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

Что такое Джанго?

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

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

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

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

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

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

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

Django использует основанную на компонентах архитектуру "без общего доступа" (каждая часть архитектуры независима от других и, следовательно, может быть заменена или изменена при необходимости). Четкое разделение между различными частями означает, что его можно масштабировать для увеличения трафика за счет добавления оборудования на любом уровне: кэширующих серверов, серверов баз данных или серверов приложений. Некоторые из самых загруженных сайтов успешно масштабировали Django для удовлетворения своих потребностей (например, Instagram и Disqus, и это только два).

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

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 превратился в универсальную платформу, способную разрабатывать веб-сайты любого типа.

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

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

 Django - файлы для представлений, модели, URL, шаблона

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

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

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

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

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

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

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

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

Представления обычно хранятся в файле views.py.

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

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

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

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

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

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

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

Эта функция использует функцию render() для создания ответа HttpResponse, который отправляется обратно в браузер.Эта функция является ярлыком; он создает файл HTML, комбинируя указанный шаблон HTML и некоторые данные для вставки в шаблон (предоставленные в переменной с именем «контекст»). В следующем разделе мы покажем, как в шаблон вставляются данные для создания 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 выше, но, в отличие от клиентского кода, для его запуска необходимо настроить среду разработки. Это наш следующий шаг.

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

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

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

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

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

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

Представьте себе почтовый ящик (порт), который отслеживается на наличие входящих писем (запросов). Это делается веб-сервером. Веб-сервер читает письмо, а затем отправляет ответ с веб-страницей. Но когда вы хотите что-то отправить, вам нужен контент. А Django — это то, что помогает вам создавать контент.

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

Когда запрос поступает на веб-сервер, он передается Django, который пытается выяснить, что на самом деле запрашивается. Сначала он берет адрес веб-страницы и пытается выяснить, что делать.Эта часть выполняется urlresolver Django (обратите внимание, что адрес веб-сайта называется URL-адресом — унифицированным указателем ресурсов — поэтому имя urlresolver имеет смысл). Это не очень умно — он берет список шаблонов и пытается сопоставить URL. Django проверяет шаблоны сверху вниз, и если что-то совпадает, Django передает запрос связанной функции (которая называется view).

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

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

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

Поэтому вместо того, чтобы слишком углубляться в детали, мы начнем создавать что-то с Django и по ходу дела изучим все важные части!

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

Что такое Джанго?

Django (произносится как «Jango», названный в честь известного джазового гитариста Джанго Рейнхардта) – это бесплатная платформа с открытым исходным кодом, впервые опубликованная в 2005 году. Django обеспечивает "быструю разработку и чистый, прагматичный дизайн". Веб-платформа Django, развернутая на веб-сервере, может помочь разработчикам быстро создать многофункциональный, безопасный и масштабируемый веб-интерфейс.

Django Architecture

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

Знакомство с веб-фреймворком Django

Нужна ли вам дополнительная информация, чтобы узнать, что такое Django и как его использовать? Хотите получить практический опыт работы с веб-приложением, созданным с использованием веб-фреймворка Django? IBM предлагает пошаговое руководство по использованию служб IBM Cloud для отслеживания активности и мониторинга работоспособности приложения Kubernetes на основе Python, написанного с использованием веб-платформы Django и работающего в IBM Cloud.

При наличии множества веб-фреймворков Python, зачем выбирать веб-фреймворк Django? Это может быть не самый простой в использовании и, конечно, не самый новый. Тем не менее, веб-фреймворк Django может подойти, если вы создаете веб-приложение, которое включает в себя межсайтовые сценарии и, как ожидается, будет обрабатывать большое количество пользователей или сложный набор функций, таких как подключение к API или аутентификация пользователей. Судя по количеству проектов на GitHub, он также очень популярен.

Любой, кто хорошо владеет языком программирования Python и его синтаксисом, должен иметь возможность начать проект с использованием веб-инфраструктуры Django для создания веб-приложения. (Примечание. Хотя большая часть ядра Django — это Python, приложения admin и gis contrib содержат код JavaScript.) Однако разработчики Django среднего и продвинутого уровня могут лучше использовать модели Django, которые представляют собой более сложные функции.

Основные функции упаковки

Веб-фреймворк Django используется уже более десяти лет и был тщательно протестирован и улучшен очень активным сообществом. У него даже есть некоммерческая организация; Фонд программного обеспечения Django продвигает, поддерживает и продвигает веб-инфраструктуру Django. Самая сильная сторона Django — это его большой набор функций — с более чем 10 000 пакетов Django платформа охватывает практически все, что вам нужно для веб-приложения. Пакеты включают API, системы управления контентом, аутентификацию пользователей, проверку форм и защиту CAPTCHA.

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

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

Сделать управление базой данных более похожим на Python

Запуск проекта Django позволяет вам построить всю модель данных вашего приложения на Python без необходимости использования SQL.Используя объектно-реляционный преобразователь (ORM), Django преобразует традиционную структуру базы данных в классы Python, чтобы упростить работу в полностью среде Python. Django-MySQL поддерживает тип данных JSON и связанные с ним функции.

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

Создание динамических страниц с помощью шаблонов

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

Шаблон HTML позволяет разработчикам Django комбинировать статические элементы (включая элементы дизайна, такие как цвета, логотипы или текст) с данными (такими как имена пользователей или местоположения) для создания новой веб-страницы на лету. С помощью model-view-controller (MVC), если вы хотите, чтобы ваше приложение приветствовало пользователя по имени при входе в систему, вы можете создать шаблон, отображающий статический текст («Добро пожаловать на сайт, X»), а затем использовать динамический заполнитель для автоматического отображения имени пользователя из вашей базы данных. При отображении страницы динамические элементы будут объединены со статическими, что обеспечит удобство работы пользователей.

Повышение безопасности

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

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

Читайте также: