Рубрики
Без рубрики

Понять Джанго: Из браузера до Джанго

Может быть, вы слышали о Django и что это может помочь вам создавать веб-сайты. Вы можете быть новым в Python … Теги с Python, Django.

Может быть, вы слышали о Django И что это может помочь вам создавать веб-сайты. Вы можете быть новым в Python, нового для веб-разработки или нового для программирования в целом.

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

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

Давайте начнем с самого вершины интернет-опыта пользователя: в веб-браузере.

Сделать запрос браузера

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

Интернет работает, выполнив желание пользователя для информации. Эта «информация» принимает разные формы. Это может быть:

  • Видео Cat на YouTube
  • Политические грохоты из социальных сетей
  • Профили других людей на сайтах знакомств

Какими бы ни были люди, информация передается через те же механизмы. В Интернете говорят, все виды информации и данных опускаются под название Ресурс Отказ

То, как мы получаем ресурсы с Однородные ресурсные локаторы или URL, для коротких. Вы знаете, какие URL-адреса, даже если вы не знали их по имени.

Это все примеры URL. Часто мы называем им веб-адреса, потому что чувствуют себя правильно. URL-адрес – это адрес некоторых ресурсов в Интернете. Когда вы нажмите Enter в адресной строке вашего браузера, вы говорите: «Пожалуйста, браузер, иди мне это». Другими словами, мы делаем Запрос из браузера. Этот запрос начинает большую цепочку событий, чтобы ресурс на этом URL можно добраться до ваших глазных яблок.

Что в этой цепи? Нагрузка вещей там. Мы рассмотрим многие слои в этом обсуждении, потому что я предполагаю, что вы не планируете спускаться до уровня того, как работают электрические сигналы в сетевых кабелях. Вместо этого давайте сосредоточимся на этих двух частях цепи сейчас: DNS и Http Отказ

Имена имена имен

URL представляет ресурс, который вы хотите из Интернета. Как интернет знает, откуда это происходит? Вот где приходит DNS. DNS обозначает Система доменного имени Отказ Важное слово есть «имя». Давайте вернемся к аналогии адреса.

В почтовом адресе (по крайней мере, с точки зрения США), есть улица, город и штат. Мы могли бы написать это как:

# Most narrow to most broad
123 Main St., Springfield, IL

123 Главный ул. В городе Спрингфилд в штате Иллинойс (IL).

Аналогично, URL вписывается в аналогичный формат.

# Most narrow to most broad
www.example.com

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

  • COM считается Домен верхнего уровня , Тдд. TLD тщательно управляется специальной группой под названием Icann. .
  • Пример это доменное имя. Это первичная идентичность службы в Интернете, поскольку именно конкретный идентификатор, который пользователь, вероятно, признает.
  • www считается поддомен домена. Домен, возможно, у многих из них www. , m , Почта , вики Или все, что владелец домена может захотеть назвать их. Поддомены также могут быть более одного уровня, так что A.b.example.com действительно, и А и B оба были поддомены example.com Отказ

Доменные имена – не Как компьютеры общаются. Доменное имя – это что-то «дружелюбный» для человека. Компьютерные системы предназначены для работы с числами, поэтому эти доменные имена должны быть переведены во что-то управляемое. Для этого Интернет использует систему DNS-серверов (компьютеры специального назначения), чтобы выступать в качестве слоя перевода между доменными именами и числами, которые используют компьютерные сети.

Может быть, вы видели эти сетевые номера. Числа называются IP-адресами, короткие для Интернет-протокол адреса. Общие примеры будут включать в себя:

  • 127.0.0.1 Как адрес, который имеет ваш компьютер Для себя на его внутренней сети.
  • 192.168.0.1 В качестве адреса по умолчанию может использовать домашний маршрутизатор.

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

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

DNS-серверы составляют в гигантскую иерархию. Когда ваш браузер делает запрос, он просит ближайший DNS-сервер для IP-адреса доменного имени, который вы запрашиваете. DNS-сервер продолжает поиск таблицы доменных имен на IP-адреса в течение определенного периода времени. Если доменное имя не в таблице, он может задать еще один DNS-сервер в цепочке, который будет продолжать искать IP-адрес домена. Это приводит к пару результатов:

  • Если ни один из серверов не может найти домен, браузер сдается и показывает вам сообщение, такое как «HMM. У нас проблемы с поиском этого сайта ». (От сервера Firefox не нашли страницу).
  • Если браузер получает IP-адрес с сервера DNS, он может продолжаться с запросом.

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

Что мы отправляем?

Я знаю, что мы все еще не разговариваем с Джанго, Но Я обещаю, что мы добираемся туда. Есть много слоев, чтобы пройти через подход сверху вниз, но я думаю, что это помогает построить основу, который удаляет тайну того, что делает работу в Интернете (и Джангу).

Другой кусок, который нам нужно исследовать, – это http, или Протокол передачи гипертекста Отказ Эта часть интернет-связи описывает, как контент передает между браузерами и серверами, или, более полно, между любыми компьютерами, которые используют протокол.

Протокол использует стандартный формат и набор команд для связи. Несколько распространенных команд:

  • Получить – Получить ресурс
  • Пост – Отправить данные на ресурс
  • Удалить – запросить удаление ресурса

Если вы посетите мой сайт в https://www.mattlayman.com/about/ Ваш браузер отправит запрос, как:

GET /about/ HTTP/1.1
Host: www.mattlayman.com
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Есть и другие части, которые я опустил, но это запускает нас. Верхняя строка предоставляет команду, путь к конкретному ресурсу на сайте (I.E., /about/ ) и версию протокола для использования.

После первой строки есть список Заголовки Отказ Средние пользователи браузера никогда не видят заголовки, но заголовки являются дополнительными данными, которые говорят серверу больше о запросе. Для http 1.1, Хозяин Заголовок требуется, потому что он диктует, где сделать запрос, но любой другой заголовок является необязательным.

В примере я также показал Принять заголовок Этот заголовок сообщает серверу, какой контент может получить браузер в качестве ответа. Есть и другие заголовки, которые могут сообщить серверу, что еще оно должно «знать». «Эти заголовки могут:

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

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

Служение ответа

Пришло время обсуждать Джанго! Теперь у нас есть грубая идея о том, какие браузеры делают. Браузер отправляет HTTP-запрос на URL-адрес, который разрешен системой DNS. Этот запрос прибывает на сервере, который подключен к IP-адресу доменного имени. Django живет на таком сервере и отвечает за ответ на ответ на HTTP ответ Отказ

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

До Django может обрабатывать запрос, более слоя для прохождения: веб-сервер Python.

Где http встречает python

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

Веб-каркас Python, как Django работает с веб-сервером. Роль веб-сервера состоит в том, чтобы перевести необработанный HTTP-запрос в формат, в котором эта основа понимает. В мире Python есть определенный формат, так что любой веб-сервер может говорить с любыми веб-структурами Python. Этот формат это Интерфейс Web Server Gateway или WSGI (который часто произносится «Wiz-Gee»).

WSGI позволяет общими веб-серверами, как Боевик , uwsgi. или mod_wsgi Общаться с общими веб-карканами Python, как Django, Колбу или Пирамида . Если вы действительно хотите Nerd выйти, вы можете исследовать все детали этого формата в PEP 3333 Отказ

Работа Джанго

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

  • Опишите набор URL-адресов, которым django отреагирует на.
  • Напишите код, который включает эти URL-адреса и возвращает ответ.

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

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

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

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

В следующей статье наша фокус будет на этих URL-адресах, на наше приложение ответит. Посмотрим:

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

Если вы хотите следовать с серией, пожалуйста, не стесняйтесь подписаться на мою рассылку, где я объявляю весь мой новый контент. Если у вас есть другие вопросы, вы можете связаться со мной онлайн в Twitter, где я @mblayman Отказ

Наконец, есть еще одна бонусная тема …

Установка

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

Мы собираемся использовать терминал для запуска команд. Windows, MacOS и Linux все немного по-другому. Я показываю MacOS здесь, потому что это то, что я бегу. Знак доллара ( $ ) – традиционный загородный персонаж для терминала Bash, поэтому, когда я перечисляю команды, не вводите этот символ. Я постараюсь дать указатели и выделить различия, когда смогу.

Нам нужно место, чтобы поставить нашу работу. Так как эта серия называется «понять Django», я собираюсь использовать это имя. Позвоните вам, что бы это значимую для вас.

$ mkdir understand-django
$ cd understand-django

Далее мы устанавливаем Django в виртуальную среду, поэтому мы сохраняем наш код проекта отдельным от остальных установленных пакетов Python.

$ python -m venv venv
$ source venv/bin/activate

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

Установите Django!

(venv) $ pip install Django

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

(venv) $ django-admin startproject project .

Эта команда говорит: «Начните проект названо « Проект »в текущем каталоге ( . ). «После того, как эта команда закончена, вы должны иметь несколько файлов и макет, который выглядит как:

(venv) $ ls
manage.py project venv

Чтобы проверить, работают ли основы, попробуйте:

(venv) $ python manage.py runserver
...
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Если вы копируете и вставьте этот URL в браузер, вы должны увидеть приветствующую страницу начала!

Другое, что нам нужно, это «приложение». Это (возможно, смущает) название компонента Django в проекте. Что вам нужно помнить, это то, что проект Django Содержит одно или несколько приложений.

Давайте создадим приложение для работы с:

(venv) $ python manage.py startapp application

Наконец, мы должны зацепить это приложение в настройки проекта Django. Откройте Проект/settings.py Найти Stall_apps и добавить к списку, чтобы он выглядел:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'application.apps.ApplicationConfig',
]

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

Эта статья впервые появилась на mattlayman.com.

Оригинал: “https://dev.to/mblayman/from-browser-to-django-j0l”