Python tutorial django: Writing your first Django app, part 1 | Django documentation

Содержание

Веб-фреймворк Django (Python) — Изучение веб-разработки

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

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

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

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

Введение в Django
В этой первой статье по Django мы ответим на вопрос «Что такое Django?» и сделаем обзор того, что делает этот веб-фреймворк особенным. Мы кратко рассмотрим основные особенности, включая некоторую продвинутую функциональность, на которой у нас не будет возможности подробно остановиться в этом модуле. Мы также покажем вам некоторые из основных строительных блоков приложения Django, чтобы дать вам представление о том, что он может сделать, прежде чем вы перейдёте к установке и начнёте экспериментировать.
Установка среды разработки Django
Теперь, когда вы знаете, что такое Django, мы покажем вам, как установить и протестировать среду разработки Django для Windows, Linux (Ubuntu) и Mac OS X — какую бы операционную систему вы не использовали, эта статья должна дать вам понимание того, что вам потребуется, чтобы начать разработку Django-приложений .
Учебник Django: Веб-сайт местной библиотеки
Первая статья в нашей серии практических уроков объясняет, что вы узнаете, и представит обзор веб-сайта «местной библиотеки», над которым мы будем работать и развиваться в последующих статьях.
Учебник Django часть 2: Создание скелета веб-сайта
В этой статье показано, как вы можете создать проект  веб-сайта «каркас» в качестве основы, после чего вы сможете заполнить параметры сайта, urls, модели, представления и шаблоны.
Учебник Django часть 3: Использование моделей
В этой статье показано, как определить модели для сайта местной библиотеки — модели представляют структуры данных, в которых мы хотим хранить данные нашего приложения, а также позволяют Django хранить данные в базе данных для нас (и модифицировать позже). Она раскрывает, что такое модель, как она объявляется и некоторые из основных типов полей. В ней также кратко показаны некоторые из основных способов доступа к данным модели.
Учебник Django часть 4: Django admin веб-сайта
Теперь, когда мы создали модели для сайта местной библиотеки, мы будем использовать Django Admin, чтобы добавить данные о книгах в библиотеке. Сначала мы покажем вам, как регистрировать и администрировать модели сайта а затем мы покажем вам, как входить в систему и создавать некоторые данные. В конце мы покажем некоторые способы дальнейшего улучшения представлений сайта.
Учебник Django часть 5: Создание главной страницы 
Теперь мы готовы добавить код для отображения нашей первой полной страницы — главной страницы сайта местной библиотеки, которая показывает, сколько записей у нас есть для каждого типа модели, и предоставляет ссылки на боковых панелях на другие наши страницы. По пути мы получим практический опыт написания основных карт и представлений URL, получения записей из базы данных и использования шаблонов.
Учебник Django часть 6: Общий список и подробные представления
Это руководство расширяет наш сайт местной библиотеки, добавляя список и подробные страницы для книг и авторов. Здесь мы узнаем об общих представлениях на основе классов и покажем, как они могут уменьшить количество кода, который вы должны писать для случаев общего использования. Мы также перейдём к обработке URL-адресов более подробно, покажем, как выполнить базовое сопоставление шаблонов.
Учебник Django часть 7:  Структура сессий
Это руководство расширяет наш сайт местной библиотеки, добавляя счётчик посещений домашней страницы. Это относительно простой пример, но он показывает, как вы можете использовать структуру сессии, чтобы обеспечить постоянное поведение анонимных пользователей на ваших собственных сайтах.
Учебник Django часть 8: Авторизация и права пользователей
В этом уроке мы покажем вам, как разрешить пользователям входить на ваш сайт со своими учётными записями и как управлять тем, что они могут делать и видеть на основе того, зарегистрированы ли они или нет, и их допусках. В рамках этой демонстрации мы расширим сайт местной библиотеки, добавив страницы входа и выхода, а также страницы пользователей и персональные страницы для просмотра книг, которые были взяты на руки.
Учебник Django часть 9: Работа с формами
В этом уроке мы покажем вам, как работать с HTML Forms в Django, и  в частности, самый простой способ писать формы для создания, обновления и удаления экземпляров модели. В рамках этой демонстрации мы расширим сайт местной библиотеки, чтобы библиотекари могли вносить новые книги, создавать, обновлять и удалять авторов, используя наши собственные формы (а не использовать приложение администратора).
Учебник Django часть10: Тестирование веб-приложения Django
По мере роста веб-сайтов становится сложнее проверять вручную — требуется больше проверок, поскольку взаимодействие между компонентами усложняется, небольшое изменение в одной области может потребовать дополнительные тесты для проверки его влияния на другие области. Один из способов смягчить эти проблемы — написать автоматизированные тесты, которые можно легко и надёжно запускать каждый раз, когда вы вносите изменения. В этом руководстве показано, как автоматизировать модульное тестирование вашего сайта с помощью тестовой среды Django.
Учебник Django часть 11: Деплой Django на продакшн
Теперь вы создали (и протестировали) удивительный сайт местной библиотеки, вам захочется установить его на общедоступный веб-сервер, чтобы к нему мог получить доступ персонал библиотеки и пользователи Интернета. В этой статье представлен обзор того, как вы можете найти хост для развёртывания вашего веб-сайта и что вам нужно сделать, чтобы подготовить ваш сайт к выпуску.
Безопасность веб-приложений Django
Защита пользовательских данных является неотъемлемой частью любой разработки сайта. Ранее мы объяснили некоторые из наиболее распространённых угроз безопасности в статье Web security — Эта статья даёт практическую демонстрацию того, как встроенные средства защиты Django справляются с такими угрозами.

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

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

Введение · HonKit

Это руководство распространяется под международной лицензией Creative Commons Attribution-ShareAlike 4.0
Чтобы ознакомиться с содержанием этой лицензии, посети: https://creativecommons. org/licenses/by-sa/4.0/

Вступительное слово

Добро пожаловать в руководство Django Girls! Мы рады тебя здесь видеть 🙂 В этом руководстве мы заглянем за кулисы веб-технологий и дадим
базовое представление о тех вещах, которые собираются в общую картину веба таким, каким мы его знаем.

Как и с любой незнакомой темой – это будет приключением. Но не волнуйся, тебе уже хватило смелости оказаться здесь, так что всё будет хорошо 🙂

Введение

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

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

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

Надеемся, что ты полюбишь информационные технологии также, как мы любим их!

Что ты узнаешь из этого руководства?

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

Он будет выглядеть следующим образом (более или менее):

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

Хорошо, давай начнем с начала. ..

Прохождение руководства дома

Принимать участие в воркшопе Django Girls – это потрясающе, но мы понимаем, что не всегда есть такая возможность. Поэтому мы приветствуем прохождение
данного руководства дома. В настоящий момент мы готовим видео, которое поможет следовать руководству самостоятельно. Работа над ними ещё не закончена,
но все больше и больше тем скоро будут разобраны на YouTube-канале Coding is for girls.

Сотрудничество и дополнительная информация

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

Хочешь помочь с переводом руководства на другие языки?

В настоящее время перевод координируется через платформу crowdin.com:

https://crowdin.com/project/django-girls-tutorial

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

Cайт на Python — Django уроки создания сайта на Питоне

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

Информация про Джанго

Язык Python универсальный и на его основе можно писать приложения для различных целей. Создать сайт на Python вполне возможно, но сайт на питоне гораздо проще создается при использовании Джанго Питон. При помощи дополнительных библиотек можно создавать как приложения, так и веб сайты. К примеру, для создания игр на Python понадобиться библиотека Pygame, а для создания сайтов – Django.

Зачем нужен Джанго?

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

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

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

Преимущества Джанго

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

В Джанго используется схема MVC. Это схема позволяет удобно разбить файлы на одну из трех категорий: HTML шаблоны, файлы модели для работы с базой данных и файлы контроллеры для связи моделей и HTML шаблонов между собой.

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

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

Сайты на Джанго

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

  1. Google — крупнейший сайт на Django. Является поисковой системой;
  2. YouTube — крупнейший видеохостинг;
  3. Instagram — популярное приложения для обмена фото и видео;
  4. Pinterest — крупнейший социальный интернет-сервис;
  5. The Washington Times — популярная всемирная газета.

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

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

Какие знания нужны?

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

Помимо Питон вам также нужно уметь работать с языком разметки HTML и языком стилей CSS. Без этих языков вам не удастся написать разметку веб страницы, поэтому перед курсом также стоит изучить HTML и CSS.

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

План курса

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

Программа обучения

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

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

Язык Python можно также использовать для написания сайтов. Вот занимательный видеокурс по Django на примере создания интернет-магазина.

Вас интересует фреймворк Django? Тогда вы по адресу. Оставим библиотеки, модули и трюки позади. Разберем Django по косточкам 😉

Эта лекция является вступительной в видеокурс по Django, в ней будет рассматриваться установка необходимого софта для работы с Python и Django. Автор показывает: процесс установки Python, настройки всех переменных, установки Django через pip, а также установку IDE PyCharm и его тестовый запуск.

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

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

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

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

https://www. youtube.com/watch?v=ZkICZB6STnM

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

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

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

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

https://www.youtube.com/watch?&v=PF1hh5ePcKI

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

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

Этот урок продолжает видеокурс по Django framework, в котором будет происходить работа с Ajax по сохранению информации о товаре в БД. Будет создана модель для корзины и доработано взаимодействие фронтенда и бекенда.

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

Это последнее видео из серии про Ajax и jQuery, в котором вы узнаете, как происходит удаление товаров из корзины.

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

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

Этот видеокурс по Django посвящен запуску проекта на сервере в интернете. В качестве ОС была выбрана Ubuntu. Весь процесс подробно описан от регистрации до запуска.

Заключительная лекция курса и последняя часть по работе с удаленным сервером с рабочим проектом. Автор рассказывает, как запустить Django на сервере при помощи связки nginx + gunicorn.

А с какими трудностями столкнулись вы, работая с Django framework?

Написание вашего первого приложения Django, часть 1 | Документация Django

Учимся на примере.

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

Состоит из двух частей:

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

Предположим, у вас уже установлен Django. Ты можешь
скажите, что Django установлен и какую версию, выполнив следующую команду
в приглашении оболочки (обозначается префиксом $):

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

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

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

Где получить помощь:

Если у вас возникли проблемы с прохождением этого руководства, перейдите по ссылке
раздел Получение помощи в FAQ.

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

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

Из командной строки введите cd в каталог, в котором вы хотите сохранить
code, затем выполните следующую команду:

Это создаст каталог mysite в вашем текущем каталоге. Если бы не
работы, см. Проблемы с запуском django-admin.

Примечание

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

Где должен находиться этот код?

Если вы используете старый добрый PHP (без использования современных фреймворков),
вы, вероятно, привыкли помещать код в корневой каталог документов веб-сервера
(в таком месте, как / var / www ). С Django этого не сделать. Его
не лучшая идея помещать какой-либо из этого кода Python в
корень документа, потому что это рискует, что люди смогут
чтобы просмотреть свой код в Интернете. Это плохо для безопасности.

Поместите свой код в какой-нибудь каталог за пределами корня документа, например
/ главная / мойкод .

Давайте посмотрим, что создал startproject :

 мизит /
    manage.py
    мой сайт/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py
 

Это файлы:

  • Внешний корневой каталог mysite / является контейнером для вашего проекта. Его
    имя не имеет значения для Django; вы можете переименовать его во что угодно.
  • manage.py : Утилита командной строки, которая позволяет вам взаимодействовать с этим
    Проект Django разными способами.Вы можете прочитать все подробности о
    manage.py в django-admin и manage.py.
  • Внутренний каталог mysite / — это фактический пакет Python для вашего
    проект. Его имя — это имя пакета Python, которое необходимо использовать для импорта.
    что-нибудь внутри него (например, mysite.urls ).
  • mysite / __ init__.py : пустой файл, который сообщает Python, что это
    каталог следует рассматривать как пакет Python. Если вы новичок в Python,
    подробнее о пакетах читайте в официальной документации Python.
  • mysite / settings.py : Настройки / конфигурация для этого Django
    проект. Настройки Django расскажут вам все о том, как настройки
    Работа.
  • mysite / urls.py : объявления URL для этого проекта Django; а
    «Оглавление» вашего сайта на Django. Вы можете узнать больше о
    URL-адреса в диспетчере URL-адресов.
  • mysite / asgi.py : точка входа для ASGI-совместимых веб-серверов в
    служить вашему проекту. Дополнительные сведения см. В разделе «Как развернуть с помощью ASGI».
  • mysite / wsgi.py : точка входа для WSGI-совместимых веб-серверов в
    служить вашему проекту. Дополнительные сведения см. В разделе «Как развернуть с помощью WSGI».

Сервер разработки¶

Давайте проверим, что ваш проект Django работает. Перейдите во внешний каталог mysite , если
вы еще этого не сделали, и выполните следующие команды:

В командной строке вы увидите следующий результат:

Выполнение системных проверок ...

Проверка системы не выявила проблем (0 отключено).У вас есть непримененные миграции; ваше приложение может не работать должным образом, пока они не будут применены.
Запустите python manage.py migrate, чтобы применить их.

30 апреля 2021 года - 15:50:53
Django версии 3.2 с использованием настроек mysite.settings
Запуск сервера разработки по адресу http://127.0.0.1:8000/
Закройте сервер, нажав CONTROL-C.
 

Примечание

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

Вы запустили сервер разработки Django, легкий веб-сервер, написанный
чисто на Python.Мы включили это в Django, чтобы вы могли разрабатывать
быстро, без необходимости настраивать рабочий сервер, например
Apache — пока вы не будете готовы к работе.

Теперь самое время отметить: не использует этот сервер в чем-либо, напоминающем
производственная среда. Он предназначен только для использования во время разработки. (Были в
бизнес по созданию веб-фреймворков, а не веб-серверов.)

Теперь, когда сервер запущен, зайдите на http://127.0.0.1:8000/ со своим веб-
браузер.Вы увидите сообщение «Поздравляем!» страница, с взлетающей ракетой.
Это сработало!

Смена порта

По умолчанию команда runserver запускает сервер разработки.
на внутреннем IP на порту 8000.

Если вы хотите изменить порт сервера, передайте
это как аргумент командной строки. Например, эта команда запускает сервер
на порт 8080:

Если вы хотите изменить IP-адрес сервера, передайте его вместе с портом. Для
Например, для прослушивания всех доступных общедоступных IP-адресов (что полезно, если вы
запускаете Vagrant или хотите показать свою работу на других компьютерах на
сеть), используйте:

0 — это ярлык для 0. 0.0.0 . Полная документация для сервера разработки
можно найти в справочнике runserver .

Автоматическая перезагрузка runserver

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

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

Теперь, когда ваша среда — «проект» — настроена, вы готовы начать
в процессе работы.

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

Проекты и приложения

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

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

Чтобы создать приложение, убедитесь, что вы находитесь в том же каталоге, что и manage.py
и введите эту команду:

Это создаст каталог опросов , который выглядит следующим образом:

 опроса /
    __init__.py
    admin.py
    apps.py
    миграции /
        __init__.py
    models.py
    tests.py
    views.py
 

В этой структуре каталогов будет размещено приложение опроса.

Напишите свой первый просмотр

Напишем первое представление. Откройте файл polls / views. py
и поместите в него следующий код Python:

 из django.http импорт HttpResponse


def index (запрос):
    return HttpResponse ("Привет, мир. Вы попали в индекс опроса.")
 

Это самый простой вид из возможных в Django. Чтобы вызвать представление, нам нужно отобразить
его в URL — а для этого нам понадобится URLconf.

Чтобы создать URLconf в каталоге опросов, создайте файл с именем urls.py .
Каталог вашего приложения теперь должен выглядеть так:

 опроса /
    __init__.py
    admin.py
    apps.py
    миграции /
        __init__.py
    модели.ру
    tests.py
    urls.py
    views.py
 

В файл polls / urls.py включите следующий код:

 из пути импорта django.urls

из . импорт просмотров

urlpatterns = [
    путь ('', views.index, name = 'index'),
]
 

Следующим шагом является указание корневого URLconf на модуль polls.urls . В
mysite / urls.py , добавьте импорт для django. urls.include и вставьте
include () в списке urlpatterns , поэтому у вас есть:

 из django.contrib import admin
из импорта django.urls, путь

urlpatterns = [
    путь ('polls /', include ('polls.urls')),
    путь ('admin /', admin.site.urls),
]
 

Функция include () позволяет ссылаться на другие URLconfs.
Всякий раз, когда Django встречает include () , он отбрасывает все
часть URL-адреса, совпадающая до этого момента, и отправляет оставшуюся строку в
включен URLconf для дальнейшей обработки.

Идея include () состоит в том, чтобы упростить
URL-адреса plug-and-play.Поскольку опросы находятся в собственном URLconf
( polls / urls.py ), их можно разместить в «/ polls /» или в
«/ Fun_polls /», или «/ content / polls /», или любой другой корневой путь, и
приложение по-прежнему будет работать.

Когда использовать include ()

Вы всегда должны использовать include () , когда включаете другие шаблоны URL.
admin.site.urls — единственное исключение.

Теперь вы подключили представление index к URLconf. Убедитесь, что он работает с
следующая команда:

Перейдите по адресу http: // localhost: 8000 / polls / в своем браузере, и вы должны увидеть
текст « Привет, мир.Вы находитесь в индексе опросов. », который вы определили в
Индекс просмотр.

Страница не найдена?

Если здесь отображается страница с ошибкой, убедитесь, что вы собираетесь
http: // localhost: 8000 / polls /, а не http: // localhost: 8000 /.

Функции path () передаются четыре аргумента, два обязательных:
route и вид и два дополнительных: kwargs и name .
На этом этапе стоит рассмотреть, для чего нужны эти аргументы.

путь () аргумент: маршрут

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

Шаблоны

не ищут параметры GET и POST или имя домена. Например,
в запросе на https://www.example.com/myapp/ URLconf будет искать
myapp / .В запросе на https://www.example.com/myapp/?page=3
URLconf также будет искать myapp / .

путь () аргумент: вид

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

путь () аргумент: kwargs

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

путь () аргумент: имя

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

Когда вы освоитесь с основным потоком запросов и ответов, прочтите
часть 2 этого руководства, чтобы начать работу с
база данных.

Django Web Framework (Python) — Изучите веб-разработку

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

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

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

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

Введение в Django
В этой первой статье о Django мы отвечаем на вопрос «Что такое Django?» и расскажем, что делает эту веб-платформу особенной. Мы опишем основные функции, включая некоторые расширенные функции, которые у нас не будет времени подробно описывать в этом модуле. Мы также покажем вам некоторые из основных строительных блоков приложения Django, чтобы дать вам представление о том, что оно может делать, прежде чем вы его настроите и начнете играть.
Настройка среды разработки Django
Теперь, когда вы знаете, для чего предназначен Django, мы покажем вам, как настроить и протестировать среду разработки Django в Windows, Linux (Ubuntu) и macOS — какую бы распространенную операционную систему вы ни использовали, эта статья должна дать вам то, что вам необходимо начать разработку приложений Django.
Учебник по Django: веб-сайт местной библиотеки
В первой статье нашей серии практических руководств объясняется, что вы узнаете, и дается обзор «локальной библиотеки» — примера веб-сайта, над которым мы будем работать и развивать в последующих статьях.
Учебное пособие по Django, часть 2: Создание скелета веб-сайта
В этой статье показано, как создать «каркасный» проект веб-сайта, который затем можно будет заполнить настройками, URL-адресами, моделями, представлениями и шаблонами для конкретного сайта.
Учебное пособие по Django, часть 3: Использование моделей
В этой статье показано, как определять модели для веб-сайта LocalLibrary — модели представляют структуры данных, в которых мы хотим хранить данные нашего приложения, а также позволяют Django хранить данные в базе данных для нас (и изменять их позже). В нем объясняется, что такое модель, как она объявлена, а также некоторые из основных типов полей. Он также кратко показывает несколько основных способов доступа к данным модели.
Учебное пособие по Django, часть 4: Административный сайт Django
Теперь, когда мы создали модели для веб-сайта LocalLibrary , мы воспользуемся сайтом администратора Django, чтобы добавить некоторые «настоящие» данные книги.Сначала мы покажем вам, как регистрировать модели на сайте администратора, затем мы покажем вам, как войти в систему и создать некоторые данные. В конце мы покажем несколько способов, с помощью которых вы можете еще больше улучшить представление админки.
Учебник по Django, часть 5: Создание домашней страницы
Теперь мы готовы добавить код для отображения нашей первой полной страницы — домашней страницы для LocalLibrary , которая показывает, сколько записей у нас есть для каждого типа модели, и предоставляет боковые навигационные ссылки на другие наши страницы.Попутно мы получим практический опыт в написании базовых URL-карт и представлений, получении записей из базы данных и использовании шаблонов.
Учебник по Django, часть 6: Общий список и подробные представления
Это руководство расширяет наш веб-сайт LocalLibrary , добавляя страницы со списками и подробностями для книг и авторов. Здесь мы узнаем об общих представлениях на основе классов и покажем, как они могут уменьшить объем кода, который вам нужно написать для общих случаев использования. Мы также более подробно рассмотрим обработку URL-адресов, показывая, как выполнять базовое сопоставление с образцом.
Учебник по Django, часть 7: Фреймворк сессий
Это руководство расширяет наш веб-сайт LocalLibrary , добавляя счетчик посещений на основе сеанса на домашнюю страницу. Это относительно простой пример, но он показывает, как вы можете использовать структуру сеанса для обеспечения постоянного поведения анонимных пользователей на ваших собственных сайтах.
Учебник по Django, часть 8: Аутентификация и разрешения пользователей
В этом руководстве мы покажем вам, как разрешить пользователям входить на ваш сайт с их собственными учетными записями, и как контролировать, что они могут делать и видеть, в зависимости от того, вошли ли они в систему и их разрешения . В рамках этой демонстрации мы расширим веб-сайт LocalLibrary , добавив страницы входа и выхода, а также страницы для пользователей и сотрудников для просмотра книг, которые были заимствованы.
Учебник по Django, часть 9: Работа с формами
В этом руководстве мы покажем вам, как работать с HTML-формами в Django, и, в частности, самый простой способ написания форм для создания, обновления и удаления экземпляров модели. В рамках этой демонстрации мы расширим веб-сайт LocalLibrary , чтобы библиотекари могли обновлять книги, а также создавать, обновлять и удалять авторов с помощью наших собственных форм (вместо использования приложения администратора).
Учебное пособие по Django, часть 10: Тестирование веб-приложения Django
По мере роста веб-сайтов их становится труднее тестировать вручную — не только становится больше для тестирования, но и по мере усложнения взаимодействия между компонентами небольшое изменение в одной области может потребовать множества дополнительных тестов, чтобы проверить его влияние на другие области. Один из способов смягчить эти проблемы — написать автоматические тесты, которые можно легко и надежно запускать каждый раз, когда вы вносите изменения. В этом руководстве показано, как автоматизировать модульное тестирование вашего веб-сайта с помощью тестовой среды Django.
Учебное пособие по Django, часть 11: Развертывание Django в рабочей среде
Теперь, когда вы создали (и протестировали) замечательный веб-сайт LocalLibrary , вы захотите установить его на общедоступном веб-сервере, чтобы к нему могли получить доступ сотрудники библиотеки и члены через Интернет. В этой статье представлен обзор того, как вы можете найти хост для развертывания вашего веб-сайта и что вам нужно сделать, чтобы подготовить ваш сайт к работе.
Безопасность веб-приложений Django
Защита пользовательских данных — неотъемлемая часть дизайна любого веб-сайта.Ранее мы объясняли некоторые из наиболее распространенных угроз безопасности в статье «Веб-безопасность» — эта статья представляет собой практическую демонстрацию того, как встроенные средства защиты Django справляются с такими угрозами.

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

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

Django — полный стек Python

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

Например,
аутентификация,
URL-маршрутизация, a
шаблонизатор,
объектно-реляционный преобразователь (ORM),
и миграции схемы базы данных
все включены в структуру Django.Сравните эту включенную функциональность с фреймворком Flask, для которого требуется
отдельная библиотека, такая как
Flask-Войти
для аутентификации пользователя.

Философия включения батарей и расширяемости — это просто две разные
способы решения проблемы построения каркаса. Ни одна из философий по своей сути не лучше
чем другой.

Почему Django — хороший выбор веб-фреймворка?

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

Я настоятельно рекомендую фреймворк Django в качестве отправной точки для новой сети Python.
разработчиков, потому что официальная документация и руководства являются одними из
лучше всего в разработке программного обеспечения. Во многих городах также есть Django-specific
такие группы, как Django District,
Джанго Бостон и
Сан-Франциско Джанго
чтобы новые разработчики могли получить помощь, когда они застряли.

Книги и руководства по Django

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

Django видео

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

Темы Django среднего и продвинутого уровней

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

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

  • Разработка через тестирование с помощью Django, Django REST Framework и Docker
    в курсе подробно рассказывается, как настроить среду разработки с помощью Docker в
    чтобы создать и развернуть RESTful API на базе Python, Django,
    и Django REST Framework.

  • Взаимодействие пользователя с формами
    объясняет общий ввод веб-форм, как Django обрабатывает формы через запросы POST,
    различные типы ввода, такие как CharFields, DateFields и EmailFields,
    и проверка этого ввода.

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

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

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

  • Работа с часовыми поясами необходима каждому веб-приложению. Этот
    сообщение в блоге о pytz, а Django — это
    отличное начало для выяснения того, что вам нужно знать.

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

  • REST API с Django: создание мощных веб-API с Python и Django
    Уильяма С. Винсента — это книга для вас
    если вы просто выходите за рамки основ Django и хотите получить
    ускорение с помощью Django REST Framework (DRF)
    и сервис-ориентированная архитектура (SOA). Он также погружается в более продвинутые
    такие темы, как аутентификация и разрешения на основе токенов.

  • Учебное пособие по Django Stripe
    подробно описано, как быстро добавить Stripe для приема платежей в веб-приложении Django.

  • Этот учебник по Python Social Auth для Django
    покажет вам, как интегрировать кнопки входа в социальные сети в ваш Django
    заявление.

  • Обновление Django
    предоставляет пошаговое руководство по обновлению ваших проектов Django ‘
    код.

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

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

  • Люк Плант пишет о
    его подход к классовым представлениям (CBV),
    которые часто вызывают жаркие споры в сообществе Django о том,
    экономят время или «слишком много магии» для фреймворка.

  • Контрольный список приложений Django
    дает некоторые передовые правила для создания многоразовых приложений Django.

Миграции Django

  • Пол Халлетт написал
    подробное руководство по обновлению приложения Django 1.7
    в блоге Twilio из своего опыта работы с django-twilio
    упаковка.

  • Учебник по миграции Real Python
    исследует разницу между миграциями Юга и встроенными
    Миграции Django 1.7, а также то, как вы их используете.

  • Серия Эндрю Пинкхэма «Обновление до Django 1.7» — отличное обучение
    материал для понимания того, что изменилось в этом основном выпуске и
    как адаптировать ваш проект Django.
    Часть 1,
    часть 2 и
    часть 3
    а также
    часть 4
    теперь все доступны для чтения.

  • миграции Django без простоев
    показывает один из возможных способов выполнения миграции схемы в режиме онлайн с помощью
    Джанго.

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

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

Каналы Django

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

Тестирование Django

Django с фреймворками JavaScript MVC

Существуют ресурсы для фреймворков JavaScript MVC, такие как
Angular, React и Vue.js
на соответствующих страницах.

Руководства по Django ORM

Django обычно имеет собственный объектно-реляционный преобразователь (ORM).
называется «Django ORM». Узнать больше о
Django ORM на отдельной странице и в более широком смысле о
ORM на
Страница объектно-реляционных сопоставителей Python.

Статические и медиафайлы

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

Шаблоны проектов Django

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

Примеры проектов Django с открытым исходным кодом

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

  • Вызов браузера с Django и Twilio
    показывает, как создать веб-приложение с помощью Django и
    Клиент Twilio для превращения пользователя в Интернет
    браузер в полноценный телефон. Довольно круто!

  • Openduty — проверка статуса сайта
    и система оповещения, аналогичная PagerDuty.

  • Courtside — это спортивная сеть.
    приложение написано и поддерживается автором PyCoder’s Weekly.

  • Эти два веб-приложения системы интерактивного голосового ответа (IVR) Django
    репозитории часть 1 и
    часть 2 покажет вам, как
    создать действительно крутое приложение Django. Также есть сопутствующий
    Сообщение блога
    с подробными объяснениями каждого шага.

  • Тайга — управление проектами
    инструмент, созданный с использованием Django в качестве бэкэнда и AngularJS в качестве интерфейса.

  • Chowist — это веб-приложение
    который воспроизводит основные функции Yelp и добавляет еще пару колокольчиков
    и свистки.

Открытый исходный код для изучения Django

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

Джанго:
Расширения, плагины и связанные библиотеки и
Примеры проектов и кода

django.apps.config AppConfig
django.conf
настройки,
URL-адреса.url
django.contrib.admin
filter.SimpleListFilter,
django.contrib.admin.helpers
ActionForm,
AdminForm
django.contrib.admin.options
IS_POPUP_VAR,
IncorrectLookupParameters,
ModelAdmin,
csrf_protect_m
django.contrib.admin.sites
Не зарегистрирован,
регистр,
сайт
django.contrib.auth
get_user_model,
декораторы login_required,
хешеры make_password
django.contrib.staticfiles
искатели,
.finders BaseFinder,
.finders BaseStorageFinder,
.искатели находят,
.finders get_finders
.handlers StaticFilesHandler
место хранения
.storage CachedStaticFilesStorage,
.storage HashedFilesMixin,
.storage ManifestStaticFilesStorage,
.storage StaticFilesStorage,
.storage staticfiles_storage
.utils match_patterns
django.core
кеш
чеки,
исключения,
Почта,
mail.send_mail,
mail.messages EmailMessage,
управление,
management.base BaseCommand,
сериализаторы,
сигналы,
подписание
валидаторы
django.core.exceptions
DisallowedRedirect,
FieldDoesNotExist,
FieldError,
Неправильно настроен,
Промежуточное ПО не используется,
NON_FIELD_ERRORS,
ObjectDoesNotExist,
В доступе отказано,
SuspiciousFileOperation,
SuspiciousMultipartForm,
Ошибка проверки
джанго.db
DEFAULT_DB_ALIAS,
DataError,
Ошибка базы данных,
IntegrityError,
OperationalError,
ProgrammingError,
связь,
связи,
миграции
роутер
сделка
.backends утилит
django.db.migrations
RunPython,
.autodetector MigrationAutodetector,
.exceptions IrreversibleError,
.executor MigrationExecutor,
.loader MIGRATIONS_MODULE_NAME,
.loader MigrationLoader,
.operations.base Operation,
.state ProjectState
django.db.models
АвтоПоле,
BooleanField,
CharField,
DateField,
DateTimeField,
FileField,
Иностранный ключ,
GenericIPAddressField,
ImageField,
IntegerField,
Модель,
PositiveIntegerField,
PositiveSmallIntegerField,
сигнал
SlugField,
SmallIntegerField,
Текстовое поле
джанго.db.models.query
BaseIterable,
EmptyQuerySet,
МодельIterable,
Предварительная выборка,
Q,
QuerySet,
prefetch_related_objects
django.db.models.query_utils
DeferredAttribute,
PathInfo,
Q
django.db.models.signals
post_delete,
post_save,
pre_delete,
pre_save
django.dispatch.dispatcher Сигнал
django.forms
Базовая форма,
BooleanField,
CharField,
CheckboxInput,
CheckboxSelectMultiple,
ChoiceField,
DateField,
DateInput,
DateTimeField,
EmailField,
Поле,
FileInput,
FilePathField,
Форма,
Скрытый ввод,
ImageField,
IntegerField,
СМИ,
MediaDefiningClass,
ModelChoiceField,
МодельФорма,
ModelMultipleChoiceField,
MultipleChoiceField,
Выбирать,
SelectMultiple,
TypedChoiceField,
Ошибка проверки
джанго.http
HttpResponse,
HttpResponseBadRequest,
HttpResponseForbidden,
HttpResponseNotModified,
Http404,
HttpResponsePermanentRedirect,
HttpResponseRedirect
django.shortcuts
get_list_or_404,
get_object_or_404,
перенаправление
оказывать,
resolve_url
django.template.base
Контекст,
FilterExpression,
Узел,
NodeList,
Парсер,
Шаблон,
TemplateSyntaxError,
TextNode,
Токен,
TokenType,
VariableDoesNotExist,
VariableNode,
token_kwargs
django.template.context
Контекст
джанго.template.defaultfilters
побег,
формат файла,
безопасный,
забивать
полоски
заглавие,
truncatechars
django.template.loader
get_template,
render_to_string,
select_template
django.template.loader_tags
BlockNode,
ExtendsNode,
IncludeNode
django.template.loaders.filesystem
Загрузчик
django.template.response
SimpleTemplateResponse,
TemplateResponse
django.urls
URLPattern,
URLResolver,
clear_url_caches,
get_callable,
get_resolver,
get_script_prefix,
включать,
дорожка,
re_path,
register_converter,
разрешить,
обеспечить регресс,
reverse_lazy
джанго.urls.exceptions
NoReverseMatch,
Резольвер404
django.utils
Формат даты,
dateparse,
datetime_safe,
форматы,
module_loading,
termcolors,
часовой пояс,
перевод,
дерево
django.utils.cache
add_ Never_cache_headers,
cc_delim_re,
patch_cache_control,
patch_response_headers,
patch_vary_headers
django.utils.crypto
constant_time_compare,
get_random_string
django.utils.datastructures
MultiValueDict
django.utils.dateparse
parse_datetime,
parse_duration
джанго.utils.dates
МЕСЯЦЫ
django.utils.datetime_safe
дата и время
django.utils.decorators
method_decorator
django.utils.deprecation
Промежуточное ПО
RenameMethodsBase
django.utils.duration
duration_string
django.utils.encoding
DjangoUnicodeDecodeError,
filepath_to_uri,
force_bytes,
force_str,
force_text,
iri_to_uri,
is_protected_type,
smart_bytes,
smart_str,
smart_text,
uri_to_iri
django.utils.formats
get_format,
localize_input,
sanitize_separators
джанго.utils.functional
LazyObject,
Обещать,
SimpleLazyObject,
keep_lazy,
ленивый,
total_ordering,
обертывания
django.utils.html
conditional_escape,
побег,
escapejs,
format_html,
format_html_join,
mark_safe,
smart_urlquote,
strip_tags
django.utils.http
base36_to_int,
http_date,
int_to_base36,
is_safe_url,
не цитировать
url_has_allowed_host_and_scheme,
urlencode,
urlquote,
urlunquote
django.utils.ipv6
clean_ipv6_address
django.utils.itercompat
is_iterable
джанго.utils.module_loading
autodiscover_modules,
import_string,
module_has_submodule
django.utils.numberformat
формат
django.utils.safestring
SafeData,
SafeText,
mark_safe
django.utils.termcolors
раскрашивать
django.utils.text
Truncator,
capfirst
format_lazy,
get_text_list,
get_valid_filename,
забивать
django.utils.timezone
get_current_timezone,
поставить в известность,
сейчас,
timedelta
django.utils.translation
LANGUAGE_SESSION_KEY,
активировать,
deactivate_all,
get_language,
get_language_from_request,
gettext,
gettext_lazy,
ngettext,
переопределить
pgettext,
pgettext_lazy,
ugettext,
ugettext_lazy,
ungettext,
ungettext_lazy
джанго.utils.version
get_complete_version
django.views
csrf
.debug get_default_exception_reporter_filter
.decorators.csrf csrf_exempt
.decorators.debug чувствительные_пост_параметры
.decorators.http require_GET,
.decorators.http require_POST
django.views.generic
CreateView,
DeleteView,
DetailView,
FormView,
Посмотреть список,
RedirectView,
TemplateView,
UpdateView,
Вид
django.views.generic.base
RedirectView,
TemplateResponseMixin,
TemplateView,
Вид
джанго.views.generic.detail
SingleObjectMixin
django.views.generic.edit
CreateView,
DeleteView,
DeletionMixin,
FormMixin,
FormView
django.views.generic.list
Посмотреть список,
MultipleObjectMixin
django.views.i18n
JavaScriptCatalog
django.views.static
обслуживать,
was_modified_since

Что вам нужно узнать дальше для вашего приложения Django?

Мое приложение работает, но выглядит ужасно. Как мне стилизовать пользовательский интерфейс?

Как мне интегрировать существующие веб-API в мое приложение?

Я создал веб-приложение Python, как мне теперь его развернуть?

Полное руководство по Django для новичков

Введение

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

Я хотел сделать что-нибудь другое. Учебник, которому будет легко следовать, информативным и интересным для чтения. Это было когда
Мне пришла в голову идея создать несколько комиксов по тексту, чтобы проиллюстрировать некоторые концепции и сценарии.Я надеюсь ты
приятного чтения!

Но прежде чем мы начнем…

Когда я работал заместителем профессора в университете, я преподавал введение в веб-разработку.
дисциплина для новичков курса информатики. И я всегда начинал с этого
Цитата Конфуция:

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


Почему именно Django?

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

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

Итак, что же такого особенного в Django? Во-первых, это веб-фреймворк Python, что означает, что вы можете извлечь выгоду из широкого
ряд библиотек с открытым исходным кодом. Индекс пакетов Python
В репозитории размещено более 116K пакетов (по состоянию на 6 сентября 2017 г.). Если вам нужно решить конкретную проблему, шансы
Кто-то уже реализовал для него библиотеку.

Django — одна из самых популярных веб-фреймворков, написанных на Python. Это определенно самый полный, предлагающий широкий
набор готовых функций, таких как автономный веб-сервер для разработки и тестирования, кэширование,
система промежуточного программного обеспечения, ORM, механизм шаблонов, обработка форм, интерфейс с инструментами модульного тестирования Python.Django тоже приходит
с батареей в комплекте , предлагает встроенные приложения, такие как система аутентификации, административный интерфейс
с автоматически генерируемыми страницами для операций CRUD, генерацией каналов синдикации (RSS / Atom), картами сайта. Есть
даже фреймворк Географической информационной системы (ГИС), созданный в Django.

Разработка Django поддерживается Django Software Foundation,
и его спонсируют такие компании, как JetBrains и Instagram. Django также существует уже довольно давно.Он находится в активной разработке уже более 12 лет и является зрелым, надежным и безопасным веб-фреймворком.

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

Хорошо знать, кто использует Django, чтобы иметь представление, что с ним можно делать. Среди крупнейших сетей
сайты, использующие Django, у нас есть: Instagram,
Disqus, Mozilla,
Bitbucket, Last.fm,
Национальная география.

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

Кстати, в прошлом году на конференции Django Under The Hood 2016 Карл Мейер, разработчик ядра Django, и Instagram
сотрудник, рассказал о том, как Instagram масштабно использует Django.
и как это поддерживало их рост. Это часовой разговор, но если вам интересно узнать больше, это был
занимательные беседы.


Установка

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

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

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

Его очень просто использовать, вот увидите!

Установка Python 3.6.2

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

Мы собираемся использовать Python 3, потому что наиболее важные библиотеки Python уже были портированы на Python 3, а также
следующая основная версия Django (2.x) больше не поддерживает Python 2. Итак, Python 3 — это то, что вам нужно.

Лучше всего использовать Homebrew. Если он не установлен на вашем Mac
тем не менее, выполните следующую команду в Терминале :

  / usr / bin / ruby ​​-e "$ (curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"  

Если у вас нет инструментов командной строки установка Homebrew может занять немного больше времени. Но
он обо всем позаботится за вас, так что не беспокойтесь.Просто сядьте и дождитесь завершения установки.

Вы узнаете, когда установка завершится, когда увидите следующее сообщение:

  ==> Установка прошла успешно!

==> Homebrew включил анонимную совокупную аналитику поведения пользователей.
Прочтите документацию по аналитике (и как отказаться) здесь:
  https://docs.brew.sh/Analytics.html

==> Следующие шаги:
- Запустите `brew help`, чтобы начать
- Дополнительная документация:
    https://docs.brew.sh  

Чтобы установить Python 3, выполните следующую команду:

  brew install python3  

Поскольку macOS уже поставляется с установленным Python 2, после установки Python 3 вам будут доступны обе версии.

Чтобы запустить Python 2, используйте команду python в Терминале. Для Python 3 используйте вместо него python3 .

Мы можем протестировать установку, набрав в Терминале:

  python3 - версия
Python 3.6.2  

Перейдите на сайт www.python.org щелкните страницу загрузки Python 3.6.2, прокрутите вниз до
вы видите файлы для загрузки, перечисленные ниже:

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

Перейдите в каталог загрузок, щелкните программу установки правой кнопкой мыши и выберите Запуск от имени администратора .

Убедитесь, что вы отметили опцию Добавить Python 3.6 в PATH и щелкните опцию Установить сейчас .

После завершения установки вы должны увидеть следующий экран:

Теперь найдите программу Command Prompt и откройте ее:

Чтобы проверить, все ли работает нормально, введите следующую команду:

  python --version  

В результате вы должны увидеть:

  Python 3.6,2  

В этом руководстве я буду использовать Ubuntu 16.04 в качестве примера. Ubuntu 16.04 уже поставляется с Python 2 (доступно
как python ) и Python 3 (доступен как python3 ). Мы можем протестировать установку, открыв Терминал
и проверка версий:

  python - версия
Python 2.7.12

python3 --version
Python 3.5.2  

Итак, все, что нам нужно сделать, это установить более новую версию Python 3.Но мы не хотим связываться с текущим Python 3.5.2, поскольку
ОС использует это. Мы просто собираемся установить Python 3.6.2 под именем python3.6 и позволить более старой версии
быть.

Если вы используете Ubuntu 16.04 или более старую версию, сначала добавьте следующий репозиторий:

  sudo add-apt-repository ppa: deadsnakes / ppa  

Если вы используете Ubuntu 16.10, 17.04 или 17.10, вам не нужно выполнять описанный выше шаг.

Теперь каждый выполняет следующие команды для установки последней версии Python 3:

  sudo apt-get update
sudo apt-get install python3.6  

Новая установка будет доступна под python3.6 , что нормально:

Отлично, Python запущен и работает. Следующий шаг: виртуальные среды!

Установка Virtualenv

На следующем шаге мы собираемся использовать pip , инструмент для управления и установки пакетов Python, чтобы установить virtualenv .

Обратите внимание, что Homebrew уже установил для вас pip под именем pip3 для вашего Python 3.6.2 установка.

В Терминале выполните следующую команду:

  sudo pip3 установить virtualenv  

В командной строке выполните следующую команду:

  pip install virtualenv  

Сначала давайте установим pip для нашей версии Python 3.6.2:

  wget https://bootstrap.pypa.io/get-pip.py
sudo python3.6 get-pip.py  

Теперь мы можем установить virtualenv :

  судо пип3.6 установить virtualenv  

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

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

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

Обычно я начинаю с создания новой папки с именем проекта внутри моей папки Development . Поскольку это происходит
чтобы стать нашим самым первым проектом, нам не нужно подбирать красивое название или что-то в этом роде. На данный момент мы можем назвать это myproject .

  мкдир myproject
компакт-диск myproject  

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

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

Внутри папки myproject :

  virtualenv venv -p python3  

  виртуальный венв  

  virtualenv venv -p python3.6  

Создана наша виртуальная среда. Теперь, прежде чем мы начнем его использовать, нам нужно активировать:

Вы узнаете, что это сработало, если увидите перед командной строкой (venv) , например:

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

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

Обратите внимание, что когда у нас активирован venv , мы будем использовать команду python (вместо python3 ) для обращения к
Python 3.6.2 и просто pip (вместо pip3 ) для установки пакетов.

Обратите внимание, что когда у нас активирован venv , мы будем использовать команду python (вместо python3.6 ) для обращения к
Python 3.6.2 и просто pip (вместо pip3.6 ) для установки пакетов.

Кстати, чтобы отключить venv , выполните следующую команду:

  venv \ Scripts \ deactivate.bat  

Но давайте оставим его активированным для следующих шагов.

Установка Django 1.11.4

Это очень просто. Теперь, когда у нас активирован venv , выполните следующую команду для установки Django:

  pip install django  

Мы все настроены!


Начало нового проекта

Чтобы запустить новый проект Django, выполните следующую команду:

  django-admin startproject myproject  

Утилита командной строки django-admin автоматически устанавливается вместе с Django.

После того, как мы запустим приведенную выше команду, она сгенерирует базовую структуру папок для проекта Django.

Сейчас наш каталог myproject выглядит так:

  myproject / <- папка более высокого уровня
 | - myproject / <- папка проекта django
 | | - мойпроект /
 | | | - __init__.py
 | | | - settings.py
 | | | - urls.py
 | | | - wsgi.py
 | + - manage.py
 + - venv / <- папка виртуальной среды  

Наша первоначальная структура проекта состоит из пяти файлов:

  • управлять.py : ярлык для использования утилиты командной строки django-admin . Он используется для выполнения команд управления
    связанные с нашим проектом. Мы будем использовать его для запуска сервера разработки, запуска тестов, создания миграций и многого другого.
  • __init__.py : этот пустой файл сообщает Python, что эта папка является пакетом Python.
  • settings.py : этот файл содержит всю конфигурацию проекта. Мы будем постоянно обращаться к этому файлу!
  • URL.py : этот файл отвечает за отображение маршрутов и путей в нашем проекте. Например, если вы хотите
    покажите что-нибудь в URL-адресе / about / , вы должны сначала сопоставить это здесь.
  • wsgi.py : этот файл представляет собой простой интерфейс шлюза, используемый для развертывания. Вам не о чем беспокоиться. Просто позволь
    это будет сейчас.

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

  python manage.py runserver  

На данный момент вы можете игнорировать ошибки миграции; мы вернемся к этому позже.

Теперь откройте следующий URL-адрес в веб-браузере: http://127.0.0.1:8000 , и вы должны увидеть следующую страницу:

Нажмите Control + C, чтобы остановить сервер разработки.

Нажмите CTRL + BREAK, чтобы остановить сервер разработки.

Нажмите Control + C, чтобы остановить сервер разработки.


Приложения Django

В философии Django есть два важных понятия:

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

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

Это способ организовать исходный код. Вначале не так просто определить, что такое приложение, а что
нет. Как организовать код и тд. Но не беспокойтесь об этом прямо сейчас! Давайте сначала освоимся с
API Django и основы.

Хорошо! Итак, для иллюстрации давайте создадим простой веб-форум или дискуссионную доску.Чтобы создать наше первое приложение, перейдите в
каталог, в котором находится файл manage.py , и выполняет следующую команду:

  django-admin startappboards  

Обратите внимание, что на этот раз мы использовали команду startapp .

Это даст нам следующую структуру каталогов:

  myproject /
 | - мойпроект /
 | | - доски / <- наше новое приложение django!
 | | | - миграции /
 | | | + - __init__.py
 | | | - __init__.ру
 | | | - admin.py
 | | | - apps.py
 | | | - models.py
 | | | - tests.py
 | | + - views.py
 | | - мойпроект /
 | | | - __init__.py
 | | | - settings.py
 | | | - urls.py
 | | | - wsgi.py
 | + - manage.py
 + - venv /  

Итак, давайте сначала рассмотрим, что делает каждый файл:

  • миграции / : здесь Django хранит некоторые файлы для отслеживания изменений, которые вы создаете в файле models.py , поэтому
    хранить базу данных и модели .py синхронизирован.
  • admin.py : это файл конфигурации для встроенного приложения Django под названием Django Admin .
  • apps.py : это файл конфигурации самого приложения.
  • models.py : здесь мы определяем сущности нашего веб-приложения. Модели переводятся автоматически
    от Django в таблицы базы данных.
  • tests.py : этот файл используется для написания модульных тестов для приложения.
  • views.py : это файл, в котором мы обрабатываем цикл запроса / ответа нашего веб-приложения.

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

Для этого откройте файл settings.py и попробуйте найти переменную INSTALLED_APPS :

settings.py

  INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'джанго.contrib.contenttypes ',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]  

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

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

  INSTALLED_APPS = [
    'джанго.contrib.admin ',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    'доски',
]  

Используя аналогию с квадратом и кругами из предыдущего комикса, желтый круг будет нашим приложением доск, и
django.contrib.admin , django.contrib.auth и т. д. будут красными кружками.


Привет, мир!

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

Откройте файл views.py в приложении Board и добавьте следующий код:

views.py

  из django.http import HttpResponse

def home (запрос):
    return HttpResponse ('Hello, World!')  

Представления - это функции Python, которые получают объект HttpRequest и возвращают объект HttpResponse .Получите запрос в качестве параметра и в результате вернет ответ . Об этом нужно помнить!

Итак, здесь мы определили простое представление с именем home , которое просто возвращает сообщение Hello, World! .

Теперь мы должны сообщить Django , когда будет обслуживать это представление. Это делается в файле urls.py :

urls.py

  из django.conf.urls import url
из джанго.домашняя страница / $ ', views.home, name =' home ') . 

Посмотрим, что получится:

  python manage.py runserver  

В веб-браузере откройте http://127.0.0.1:8000 URL:

Вот и все! Вы только что создали свое первое представление.


Выводы

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

Надеюсь, вам понравилась первая часть! Вторая часть выйдет на следующей неделе, 11 сентября 2017 года. Она будет примерно
модели, представления, шаблоны и URL-адреса. Мы вместе исследуем все основы Django! Если вы хотите получить
уведомление, когда вторая часть отсутствует, вы можете
Подпишитесь на нашу почтовую рассылку.

Чтобы мы могли оставаться на той же странице, я сделал исходный код доступным на GitHub.Текущее состояние проекта может
можно найти под тегом выпуска v0.1-lw . Ссылка ниже приведет вас в нужное место:

https://github.com/sibtc/django-beginners-guide/tree/v0.1-lw


Докеризация веб-приложения Python Django

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

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

К концу статьи вы сможете:

  • Разберитесь, что такое Docker и как он используется,
  • Создайте простое приложение Python Django и
  • Создайте простой Dockerfile для создания контейнера, в котором запущен сервер веб-приложений Django.
  • Настройка конвейеров непрерывной интеграции и доставки (CI / CD) для автоматической сборки и тестирования образа Docker

Что такое Docker?

На домашней странице

Docker Docker описан следующим образом:

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

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

  • Docker не требует зачастую трудоемкого процесса установки всей ОС на виртуальную машину, такую ​​как VirtualBox или VMWare.
  • Вы создаете контейнер с несколькими командами, а затем выполняете в нем свои приложения через Dockerfile.
  • Docker управляет большей частью виртуализации операционной системы за вас, поэтому вы можете продолжать писать приложения и отправлять их по мере необходимости в созданном вами контейнере.
  • Dockerfiles могут быть предоставлены другим пользователям для создания контейнеров и расширения инструкций в них путем создания образа контейнера поверх существующего.
  • Контейнеры также очень портативны и будут работать одинаково независимо от ОС хоста, на которой они выполняются. Переносимость - огромный плюс Docker.

Предварительные требования

Перед тем, как приступить к этому руководству, убедитесь, что в вашей системе установлено следующее:

Настройка веб-приложения Django

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

.

  • Нажмите Clone или загрузите и скопируйте URL:
  • Клонируйте код на свой компьютер с помощью git:
  $ git clone YOUR_REPOSITORY_URL
$ cd django-markdown-редактор  

Давайте посмотрим на структуру проекта, я пропустил некоторые файлы и папки, которые мы не будем посещать сегодня:

 .
├── требования.txt # <список модулей Python
└── martor_demo # <корень проекта Django
 ├── приложение # <Код приложения
 │ ├── admin.py
 │ ├── apps.py
 │ ├── forms.py
 │ ├── миграции
 │ ├── models.py
 │ ├── шаблоны
 │ ├── urls.py
 │ └── views.py
 ├── manage.py # <Инструмент управления Django
 └── martor_demo # <Основные настройки Django
 ├── settings.py
 ├── urls.py
 └── wsgi.py  

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

Однако, прежде чем мы сможем запустить его, нам нужно будет загрузить и все зависимости.

Сначала создайте виртуальную среду Python:

  $ python -m venv venv
$ echo venv / >> .gitignore
$ source venv / bin / активировать  

Затем добавьте несколько модулей Python, которые нам понадобятся:

  • Gunicorn : gunicorn - это HTTP-сервер.Мы будем использовать его для обслуживания приложения внутри контейнера Docker.
  • Martor : Martor - это плагин Markdown для Django
  $ echo martor >> requirements.txt
$ echo gunicorn >> requirements.txt  

.

Установите все модули, используя:

  $ pip install -r requirements.txt  

Отправьте изменение на GitHub:

  $ git add .gitignore requirements.txt
$ git commit -m "добавил мартора и пулеметчика"
$ git push origin master  

И запустите сервер разработки, вы можете посетить свое приложение по адресу http: // 127.0.0.1: 8000:

  $ cd martor_demo
$ python manage.py сервер запуска  

Если вы проверите вывод предыдущей команды, вы увидите это сообщение:

  У вас 17 непримененных миграций. Ваш проект может работать неправильно, пока вы не примените миграции для приложений: admin, auth, contenttypes, sessions.
Запустите python manage.py migrate, чтобы применить их.  

Django выводит это предупреждение, поскольку обнаружил, что база данных не была инициализирована.

Чтобы инициализировать локальную тестовую базу данных и избавиться от сообщения, выполните:

  $ python manage.py makemigrations
$ python manage.py перенести  

Тестирование в Django

В этом разделе добавим несколько тестов в приложение. Тесты - наша первая линия защиты от ошибок.

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

Создайте файл с именем app / testPosts.py :

  # app / testPosts.ру

из django.test импортировать TestCase
из app.models import Post


класс PostTestCase (TestCase):
    def testPost (self):
        post = Post (title = "My Title", description = "Blurb", wiki = "Body Body")
        self.assertEqual (post.title, «Мое название»)
        self.assertEqual (post.description, «Blurb»)
        self.assertEqual (post.wiki, «Тело сообщения»)
  

Код является иллюстрацией обычного модульного теста:

  • Импортируйте модель Post из приложения.
  • Создайте объект post с некоторыми начальными значениями.
  • Убедитесь, что значения соответствуют ожиданиям.

Для запуска тестового примера:

  $ тест python manage.py
Создание тестовой базы данных для псевдонима default ...
Проверка системы не выявила проблем (0 отключено).
.
-------------------------------------------------- --------------------
Выполнить 1 тест за 0,001 с

ОК
Уничтожение тестовой базы данных для псевдонима default ...  

Еще одним тестом, поставляемым Django, являются контрольные списки развертывания.Это скрипты, которые проверяют потенциально опасные настройки безопасности.

Для запуска контрольного списка:

  $ python manage.py check - развернуть  

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

Статические и динамические файлы

Нам просто нужно внести одну модификацию, прежде чем мы сможем продолжить. В Django есть концепция статических файлов.Это файлы без кода Python, обычно это изображения, таблицы стилей CSS или JavaScript.

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

Для настройки статического расположения файла:

  • Отредактируйте файл martor_demo / settings.py
  • Найдите STATIC_ROOT и MEDIA_ROOT и замените строки на эти:
  # martor_demo / settings.py

. . .

STATIC_ROOT = os.path.join (BASE_DIR, "статический")
MEDIA_ROOT = os.path.join (BASE_DIR, "media")  

Django собирает все статические файлы в один каталог:

  $ python manage.py collectstatic  

Перенести все модификации на GitHub:

  $ git добавить martor_demo / settings.py приложение / testPosts.py
$ git add static
$ git commit -m "добавить модульный тест и статические файлы"
$ git push origin master  

Непрерывная интеграция

Имея начальное приложение и несколько тестов, пора сосредоточиться на использовании непрерывной интеграции (CI) для построения и тестирования кода в чистой, воспроизводимой среде.

Настройка конвейера CI / CD в Semaphore занимает всего несколько минут. Как только он будет установлен, Semaphore будет запускать тесты для вас при каждом обновлении и, если ошибок нет, автоматически создает образ Docker.

  • Посетите Semaphore и зарегистрируйтесь для получения бесплатной учетной записи с помощью кнопки Зарегистрироваться с помощью кнопки GitHub .
  • Используйте кнопку + (знак плюса) рядом с Projects , чтобы найти свой репозиторий GitHub:
  • Нажмите Выберите рядом с вашим репозиторием:
  • Выберите опцию: Сначала настройте

Откроется конструктор рабочих процессов :

Основными элементами застройщика являются:

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

Первый блок должен загрузить модули Python и собрать проект:

  • Щелкните первый блок и задайте ему имя «Build»
  • В блоке команд задания введите следующее:
  sem-version python 3.7
проверить
mkdir .pip_cache
восстановление кеша
pip install --cache-dir .pip_cache -r requirements.txt
кеш-хранилище  
  • Нажмите Запустить рабочий процесс .
  • Установите для ветви главный .
  • Щелкните Start .

У нас есть три команды во встроенном наборе инструментов Semaphore:

  • sem-version активирует определенную версию одного из поддерживаемых языков. В случае Python он также настраивает виртуальную среду.
  • checkout использует git для клонирования правильной версии кода.
  • кэш хранит и восстанавливает файлы в кэше проекта. Кэш может определить, какие файлы и каталоги ему необходимо сохранить.Мы можем использовать его, чтобы не загружать пакеты Python каждый раз.

Первоначальный конвейер CI запустится немедленно, через несколько секунд он должен завершиться без ошибок:

Добавьте второй блок для запуска тестов:

  • Щелкните Изменить рабочий процесс .
  • Нажмите + Добавить блок.
  • Установите имя блока на «Тест».
  • Откройте раздел Prologue , введите следующие команды. Пролог выполняется перед каждым заданием в блоке:
  sem-version python 3.7
проверить
восстановление кеша
pip install --cache-dir .pip_cache -r requirements.txt  
  • Установите имя первого задания в блоке на «Модульные тесты».
  • Введите следующие команды:
  cd martor_demo
python manage.py makemigrations
python manage.py мигрировать
тест python manage.py  
  • Добавьте второе задание под названием «Контрольный список» и добавьте следующие команды:
  cd martor_demo
проверка python manage.py --deploy  
  • Это хорошее место для проверки стиля.Добавьте третье задание под названием «Проверка стиля» с помощью следующих команд. Мы используем flake8 для проверки стиля кода:
  pip install flake8
flake8 martor_demo / --max-line-length = 127  
  • Нажмите Запустить рабочий процесс и Пуск:

Вероятно, проверка стиля завершится неудачно. Flake8 очень внимательно относится к тому, как должен выглядеть код. Если вы столкнулись с ошибками стиля:

  • Щелкните задание Style Check и просмотрите журнал.
  • Загрузите код на свой компьютер: git pull origin master
  • Исправьте ошибки.
  • Используйте git, чтобы добавить , зафиксировать и протолкнуть фиксированный код.
  • Конвейер CI запустится снова. Щелкните ветку master вверху, чтобы увидеть, как работает новый конвейер.

Докеризация приложения

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

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

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

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

Установка Docker

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

В Windows и OSX установите Docker Desktop.

Для Linux Docker почти повсеместно встречается во всех основных дистрибутивах.

Написание файла Docker

Следующий этап - добавить в проект Dockerfile . Это позволит Docker создать образ, который он будет выполнять на Docker Machine, которую вы только что создали. Написание Dockerfile довольно просто и содержит множество элементов, которые можно повторно использовать и / или найти в Интернете.Docker предоставляет множество функций, которые потребуются вам для создания образа. Если вам нужно сделать что-то более индивидуальное в своем проекте, Dockerfiles достаточно гибкие, чтобы вы могли это сделать.

Структура Dockerfile можно рассматривать как серию инструкций о том, как создать свой контейнер / образ. Например, подавляющее большинство файлов Dockerfiles будут начинаться со ссылки на базовый образ, предоставленный Docker. Как правило, это будет простой ванильный образ последней версии Ubuntu или другой выбранной ОС Linux.Оттуда вы можете настроить структуры каталогов, переменные среды, зависимости загрузки и многие другие стандартные системные задачи, прежде чем, наконец, выполнить процесс, который будет запускать ваше веб-приложение.

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

Создадим Dockerfile в корне нашего проекта, перейдем на один каталог вверх:

  $ CD ..  

Создайте новый файл с именем nginx.default . Это будет наша конфигурация для nginx. Мы будем прослушивать порт 8020 , обслуживать статические файлы из каталога / opt / app / martor_demo / static и перенаправлять остальные соединения на порт 8010 , где Gunicorn будет прослушивать:

  # nginx.По умолчанию

server {
    слушайте 8020;
    имя_сервера example.org;

    место расположения / {
        proxy_pass http://127.0.0.1:8010;
        proxy_set_header Host $ host;
        proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for;
    }
    location / static {
        корень / opt / app / martor_demo;
    }
}  

Создайте сценарий запуска сервера с именем start-server.sh . Это сценарий Bash, который запускает Gunicorn и Ngnix:

  #! / Usr / bin / env bash
# стартовый сервер.ш
если [-n "$ DJANGO_SUPERUSER_USERNAME"] && [-n "$ DJANGO_SUPERUSER_PASSWORD"]; тогда
    (cd martor_demo; python manage.py создаетuperuser --no-input)
фи
(cd martor_demo; gunicorn martor_demo.wsgi --user www-data --bind 0.0.0.0:8010 --workers 3) &
nginx -g "демон выключен;"  

Затем вы передаете команду gunicorn с первым аргументом martor_demo.wsgi . Это ссылка на файл wsgi , созданный для нас Django и являющийся файлом интерфейса шлюза веб-сервера, который является стандартом Python для веб-приложений и серверов.Не вдаваясь в подробности WSGI, файл просто определяет переменную приложения, а Gunicorn знает, как взаимодействовать с объектом, чтобы запустить веб-сервер.

Затем вы передаете команде два флага: bind для подключения работающего сервера к порту 8020 , который вы будете использовать для связи с работающим веб-сервером через HTTP. Наконец, вы указываете worker - количество потоков, которые будут обрабатывать запросы, поступающие в ваше приложение.Gunicorn рекомендует установить это значение на (2 x $ num_cores) + 1 . Вы можете узнать больше о настройке Gunicorn в их документации.

Сделать скрипт исполняемым:

  $ chmod 755 start-server.sh  

Создайте файл Dockerfile:

  # Dockerfile

# Директива FROM, указывающая на создание базового образа
ОТ python: 3.7-buster

. . .  

Стоит отметить, что мы используем базовый образ, созданный специально для обработки Python 3.7 приложений и набор инструкций, которые будут запускаться автоматически перед остальной частью вашего Dockerfile .

Затем добавьте команды установки Nginx и COPY файл конфигурации внутри контейнера:

 . . .

ЗАПУСТИТЬ apt-get update && apt-get install nginx vim -y --no-install-рекомендует
КОПИРОВАТЬ nginx.default / etc / nginx / sites-available / default
ЗАПУСК ln -sf / dev / stdout /var/log/nginx/access.log \
    && ln -sf / dev / stderr / var / log / nginx / error.бревно

. . .  

Пора скопировать исходные файлы и скрипты внутри контейнера. Мы можем использовать команду COPY для копирования файлов и команду RUN для выполнения программ во время сборки.

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

.

 . . .

ЗАПУСТИТЬ mkdir -p / opt / app
ЗАПУСТИТЬ mkdir -p / opt / app / pip_cache
ЗАПУСТИТЬ mkdir -p / opt / app / martor_demo
КОПИРОВАТЬ файл requirements.txt start-server.sh / opt / app /
КОПИРОВАТЬ .pip_cache / opt / app / pip_cache /
КОПИРОВАТЬ martor_demo / opt / app / martor_demo /
WORKDIR / opt / app
ЗАПУСТИТЬ pip install -r requirements.txt --cache-dir / opt / app / pip_cache
RUN chown -R www-data: www-data / opt / app

. . .  

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

 .. .
EXPOSE 8020
СИГТЕРМ ОСТАНОВКИ
CMD ["/opt/app/start-server.sh"]  

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

После всего этого ваш последний файл Dockerfile должен выглядеть примерно так:

  # Dockerfile

ОТ python: 3.7-бастер

# установить nginx
ЗАПУСТИТЬ apt-get update && apt-get install nginx vim -y --no-install-рекомендует
КОПИРОВАТЬ nginx.default / etc / nginx / sites-available / default
ЗАПУСК ln -sf / dev / stdout /var/log/nginx/access.log \
    && ln -sf / dev / stderr /var/log/nginx/error.log

# копируем исходный код и устанавливаем зависимости
ЗАПУСТИТЬ mkdir -p / opt / app
ЗАПУСТИТЬ mkdir -p / opt / app / pip_cache
ЗАПУСТИТЬ mkdir -p / opt / app / martor_demo
КОПИРОВАТЬ requirements.txt start-server.sh / opt / app /
КОПИРОВАТЬ .pip_cache / opt / app / pip_cache /
КОПИРОВАТЬ martor_demo / opt / app / martor_demo /
WORKDIR / opt / app
RUN pip install -r требования.txt --cache-dir / opt / app / pip_cache
RUN chown -R www-data: www-data / opt / app

# запустить сервер
EXPOSE 8020
СИГТЕРМ ОСТАНОВКИ
CMD ["/opt/app/start-server.sh"]  

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

Сборка и запуск контейнера

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

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

  $ mkdir -p .pip_cache
$ docker build -t django-markdown-editor.

Отправка контекста сборки демону Docker 5.41 МБ
Шаг 1/16: ИЗ python: 3.7-buster
 ---> b567432174fe
Шаг 2/16: ЗАПУСТИТЕ apt-get update && apt-get install nginx vim -y --no-install-рекомендует
 ---> Использование кеша
 ---> 46f647379df9
Шаг 3/16: КОПИРОВАТЬ nginx.default / etc / nginx / sites-available / default
 ---> Использование кеша
 ---> 53af0e710b52
Шаг 4/16: ЗАПУСК ln -sf / dev / stdout /var/log/nginx/access.log && ln -sf / dev / stderr /var/log/nginx/error.log
 ---> Использование кеша
 ---> f54cb89076b8
Шаг 5/16: ЗАПУСК mkdir -p / opt / app
 ---> Использование кеша
 ---> e2c82bfe9c0f
Шаг 6/16: ЗАПУСТИТЬ mkdir -p / opt / app / pip_cache
 ---> Использование кеша
 ---> 9417b14a5d18
Шаг 7/16: ЗАПУСТИТЕ mkdir -p / opt / app / martor_demo
 ---> Использование кеша
 ---> b61eee144f7a
Шаг 8/16: Требования к КОПИРОВАНИЮ.txt start-server.sh / opt / app /
 ---> Использование кеша
 ---> 44cff1209ee7
Шаг 9/16: КОПИРУЙТЕ .pip_cache / opt / app / pip_cache /
 ---> Использование кеша
 ---> f3e5ea5e138c
Шаг 10/16: КОПИРОВАТЬ martor_demo / opt / app / martor_demo /
 ---> 5fcfa2e6c025
Шаг 11/16: WORKDIR / opt / app
 ---> Запуск в 5e0e8b4ac0a7
Снятие промежуточного контейнера 5e0e8b4ac0a7
 ---> 0d4990ce6e4c
Шаг 12/16: ЗАПУСТИТЬ pip install -r requirements.txt --cache-dir / opt / app / pip_cache
 ---> Запуск в 93fcff680e23
Сбор Django
  Скачивание https: // файлов.pythonhosted.org/packages/55/d1/8ade70e65fa157e1903fe4078305ca53b6819ab212d9fbbe5755afc8ea2e/Django-3.0.2-py3-none-any.whl (7,4 МБ)
Сбор Markdown
  Скачивание https://files.pythonhosted.org/packages/c0/4e/fd492e91abdc2d2fcb70ef453064d980688762079397f779758e055f6575/Markdown-3.1.1-py2.py3-none-any.whl (87 КБ)
Сбор запросов
  Скачивание https://files.pythonhosted.org/packages/51/bd/23c926cd341ea6b7dd0b2a00aba99ae0f828be89d72b2190f27c11d4b7fb/requests-2.22.0-py2.py3-none-any.whl (57kB)
Собирать мартора
  Скачивание https: // файлов.pythonhosted.org/packages/f5/69/fc6c8d748dbc86e5dea58c592de821638f73bf1a147b243ff81093ca3dd9/martor-1.4.6.tar.gz (1,3 МБ)
Сбор пулеметчика
  Скачивание https://files.pythonhosted.org/packages/69/ca/926f7cd3a2014b16870086b2d0fdc84a9e49473c68a8dff8b57f7c156f43/gunicorn-20.0.4-py2.py3-none-any.whl (77kB)
Сбор питца
  Скачивание https://files.pythonhosted.org/packages/e7/f9/f0b53f88060247251bf481fa6ea62cd0d25bf1b11a87888e53ce5b7c8ad2/pytz-2019.3-py2.py3-none-any.whl (509kB)
Собираем asgiref ~ = 3.2
  Скачивание https://files.pythonhosted.org/packages/a5/cb/5a235b605a9753ebcb2730c75e610fb51c8cab3f01230080a8229fa36adb/asgiref-3.2.3-py2.py3-none-any.whl
Сбор sqlparse> = 0.2.2
  Скачивание https://files.pythonhosted.org/packages/ef/53/900f7d2a54557c6a37886585a520e5539e3ae2423ff1102daf4f3a7/sqlparse-0.3.0-py2.py3-none-any.whl
Требование уже выполнено: setuptools> = 36 в /usr/local/lib/python3.7/site-packages (из Markdown -> - r requirements.txt (строка 2)) (44.0.0)
Получение сертификатов> = 2017.4,17
  Скачивание https://files.pythonhosted.org/packages/b9/63/df50cac98ea0d5b006c55a399c3bf1db9da7b5a24de7890bc9cfd5dd9e99/certifi-2019.11.28-py2.py3-none-any.whl (156kB)
Сбор идна <2,9,> = 2,5
  Скачивание https://files.pythonhosted.org/packages/14/2c/cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9/idna-2.8-py2.py3-none-any.whl (58kB)
Сбор chardet <3.1.0,> = 3.0.2
  Скачивание https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133 КБ)
Сбор urllib3! = 1.25.0,! = 1.25.1, <1.26,> = 1.21.1
  Скачивание https://files.pythonhosted.org/packages/e8/74/6e4f
    020f967d09332bb2b8b9b100

    334692eb88ea4afe91b77f/urllib3-1.25.8-py2.py3-none-any.whl (125kB) Строительные колеса для собранных пакетов: martor Строительное колесо для martor (setup.py): запущено Строительное колесо для martor (setup.py): завершено со статусом «готово» Создано колесо для martor: filename = martor-1.4.6-cp37-none-any.whl size = 1365093 sha256 = 2364550163dc1a1711e4a5b455179f25ec4a735f4f760fc8ae6cf7b9a7eda111 Хранится в каталоге: / opt / app / pip_cache / wheels / 56/89 / c8 / 3e9e03817d710195864f4fa373ccb847dbc1deed86b104da9d Успешно построенный мартор Установка собранных пакетов: pytz, asgiref, sqlparse, Django, Markdown, certifi, idna, chardet, urllib3, requests, martor, gunicorn Успешно установлен Django-3.0.2 Markdown-3.1.1 asgiref-3.2.3 certifi-2019.11.28 chardet-3.0.4 gunicorn-20.0.4 idna-2.8 martor-1.4.6 pytz-2019.3 requests-2.22.0 sqlparse-0.3.0 urllib3-1.25 .8 ВНИМАНИЕ: вы используете версию 19.3.1; однако доступна версия 20.0.1. Вам следует рассмотреть возможность обновления с помощью команды pip install --upgrade pip. Снятие промежуточного контейнера 93fcff680e23 ---> 0d207d72a9ab Шаг 13/16: ЗАПУСК chown -R www-data: www-data / opt / app ---> Запуск в 8eb0eac504e7 Снятие промежуточного контейнера 8eb0eac504e7 ---> 38c7f2eba7b0 Шаг 14/16: ЭКСПОЗИЦИЯ 8020 ---> Работает в 1843c524da90 Снятие промежуточного контейнера 1843c524da90 ---> facc56f2a7a8 Шаг 15/16: СИГТЕРМ ОСТАНОВКИ ---> Запуск в d7ce9739eb46 Снятие промежуточного контейнера d7ce9739eb46 ---> 1052bc6459eb Шаг 16/16: CMD ["/ opt / app / start-server.sh "] ---> Запуск в ba62a08ed2c1 Снятие промежуточного контейнера ba62a08ed2c1 ---> 927b8785ea27 Успешно построено 927b8785ea27 Успешно отмечен тег django-markdown-editor: latest

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

Последний шаг - запустить контейнер, который вы только что создали с помощью Docker:

  $ docker run -it -p 8020: 8020 \
     -e DJANGO_SUPERUSER_USERNAME = admin \
     -e DJANGO_SUPERUSER_PASSWORD = секрет1 \
     -e DJANGO_SUPERUSER_EMAIL = admin @ example.com \
     django-markdown-редактор

Суперпользователь успешно создан
[2020-01-24 00:00:47 +0000] [8] [ИНФОРМАЦИЯ] Запуск Gunicorn 20.0.4
[2020-01-24 00:00:47 +0000] [8] [INFO] Слушает: http://0.0.0.0:8010 (8)
[2020-01-24 00:00:47 +0000] [8] [ИНФОРМАЦИЯ] Использование worker: sync
[2020-01-24 00:00:47 +0000] [15] [INFO] Загрузка рабочего с pid: 15
[2020-01-24 00:00:47 +0000] [16] [INFO] Загрузка рабочего с pid: 16
[2020-01-24 00:00:47 +0000] [17] [INFO] Загрузка рабочего с pid: 17
  

Команда указывает Docker запустить контейнер и перенаправить открытый порт 8020 на порт 8020 на вашем локальном компьютере.С помощью -e мы устанавливаем переменные среды, которые автоматически создают пользователя с правами администратора.

После того, как вы запустите эту команду, вы сможете посетить http: // localhost: 8020 и http: // localhost: 8020 / admin в своем браузере, чтобы получить доступ к приложению.

Непрерывное развертывание

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

Мы расширим наш конвейер CI, добавив новый, который запускает команды сборки и загружает образ в Docker Hub.

Для продолжения вам понадобится логин в Docker Hub:

  • Отправляйтесь в Docker Hub.
  • Используйте кнопку Get Started для регистрации.
  • Вернитесь в свою учетную запись Semaphore .
  • В левом меню навигации щелкните Secrets в разделе Configuration :
  • Щелкните Create New Secret .
  • Создайте секрет под названием «dockerhub» с именем пользователя и паролем вашей учетной записи Docker Hub:

Секреты семафоров

хранят ваши учетные данные и другие конфиденциальные данные за пределами вашего репозитория GitHub и делают их доступными в качестве переменных среды в ваших заданиях при активации.

Конвейер Dockerize

  • Откройте конвейер CI на Semaphore и снова щелкните Edit Workflow .
  • Используйте пунктирную кнопку + Add First Promotion , чтобы создать новый конвейер, подключенный к основному:
  • Вызов нового конвейера: «Dockerize»
  • Убедитесь, что опция Включить автоматическое продвижение отмечена, чтобы новый конвейер мог запускаться автоматически:
  • Щелкните по первому блоку на новом конвейере.Задайте ему имя «Сборка докеров».
  • Откройте пролог и введите следующие команды. Пролог восстанавливает пакеты из кеша и подготавливает базу данных:
  sem-version python 3.7
проверить
восстановление кеша
mkdir -p .pip_cache
pip install --cache-dir .pip_cache -r requirements.txt
cd martor_demo
python manage.py makemigrations
python manage.py мигрировать
cd ..  
  • В поле команд задания введите следующие команды. Задание извлекает последний образ (если он существует), создает новую версию и отправляет ее в Docker Hub.Параметр --cache-from указывает Docker на необходимость повторного использования старого образа для ускорения процесса:
  echo "$ {DOCKER_PASSWORD}" | docker login -u "$ {DOCKER_USERNAME}" --password-stdin
docker pull $ DOCKER_USERNAME / django-markdown-editor: latest || правда
docker build --cache-from = $ DOCKER_USERNAME / django-markdown-editor: latest -t $ DOCKER_USERNAME / django-markdown-editor: latest.
docker push $ DOCKER_USERNAME / django-markdown-editor: последняя версия  
  • В разделе Secrets проверьте dockerhub secret:
  • Нажмите Запустите рабочий процесс и Запустите .

Конвейеры CI / CD запускаются автоматически. После прохождения всех тестов конвейер Dockerize создаст новый образ Docker и отправит его в Docker Hub.

Вы можете загрузить образ на свой компьютер и запустить его как обычно:

  $ docker pull YOUR_DOCKER_USERNAME / django-markdown-editor  

Следующие шаги

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

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

Вариантов много:

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

Независимо от того, какой вариант вы выберете, вам необходимо:

  • Настройте Django для подключения к базе данных.
  • Создайте новый секрет на Semaphore с паролем подключения к базе данных.
  • Передайте параметры подключения к базе данных в качестве переменных среды при запуске контейнера Docker.

Заключение

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

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

Запуск вашего приложения - это первый шаг на пути Kubernetes. С Kubernetes вы можете запускать свои приложения в любом масштабе и предоставлять обновления без простоев:

Следующие чтения :

Quickstart - Django REST framework

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

Создайте новый проект Django с именем tutorial , затем запустите новое приложение с именем quickstart .

  # Создать каталог проекта
mkdir учебник
cd учебник

# Создайте виртуальную среду, чтобы изолировать наши зависимости пакетов локально
python3 -m venv env
source env / bin / activate # В Windows используйте `env \ Scripts \ activate`

# Установите Django и Django REST framework в виртуальную среду
pip установить django
pip установить djangorestframework

# Создайте новый проект с одним приложением
Руководство по запуску проекта django-admin.# Обратите внимание на завершающий '.' персонаж
cd учебник
Быстрый запуск запуска приложения django-admin
CD ..
  

Макет проекта должен выглядеть так:

  $ в день
<некоторый путь> / учебник
$ найти.
.
./manage.py
./руководство
./tutorial/__init__.py
./tutorial/quickstart
./tutorial/quickstart/__init__.py
./tutorial/quickstart/admin.py
./tutorial/quickstart/apps.py
./tutorial/quickstart/migrations
./tutorial/quickstart/migrations/__init__.py
./tutorial/quickstart/models.py
./tutorial/quickstart/tests.ру
./tutorial/quickstart/views.py
./tutorial/settings.py
./tutorial/urls.py
./tutorial/wsgi.py
  

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

Теперь синхронизируйте свою базу данных в первый раз:

  python manage.py мигрировать
  

Мы также создадим начального пользователя с именем admin с паролем password123 .Мы аутентифицируемся как этот пользователь позже в нашем примере.

  python manage.py createduperuser --email [email protected] --username admin
  

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

Сначала мы собираемся определить несколько сериализаторов. Давайте создадим новый модуль с именем tutorial / quickstart / serializers.py , который мы будем использовать для наших представлений данных.

  из django.contrib.auth.models импорт пользователя, группы
из сериализаторов импорта rest_framework


класс UserSerializer (сериализаторы.HyperlinkedModelSerializer):
    класс Мета:
        model = Пользователь
        fields = ['url', 'username', 'email', 'groups']


класс GroupSerializer (сериализаторы.HyperlinkedModelSerializer):
    класс Мета:
        model = Группа
        fields = ['url', 'name']
  

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

Хорошо, тогда лучше напишем несколько обзоров. Откройте учебник / quickstart / views.py и начните печатать.

  из django.contrib.auth.models импортировать пользователя, группу
из rest_framework импортных наборов
из разрешений на импорт rest_framework
из tutorial.quickstart.serializers импортировать UserSerializer, GroupSerializer


класс UserViewSet (viewsets.ModelViewSet):
    "" "
    Конечная точка API, позволяющая просматривать или редактировать пользователей.
    "" "
    queryset = User.objects.all (). order_by ('- date_joined')
    serializer_class = UserSerializer
    permission_classes = [разрешения.IsAuthenticated]


класс GroupViewSet (viewsets.ModelViewSet):
    "" "
    Конечная точка API, позволяющая просматривать или редактировать группы.
    "" "
    queryset = Group.objects.all ()
    serializer_class = GroupSerializer
    permission_classes = [permissions.IsAuthenticated]
  

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

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

Хорошо, теперь давайте подключим URL-адреса API. Перейти к руководству / urls.py ...

  из django.urls import include, path
из роутеров импорта rest_framework
из представлений импорта tutorial.quickstart

router = routers.DefaultRouter ()
router.register (r'users ', views.UserViewSet)
router.register (r'groups ', views.GroupViewSet)

# Подключите наш API, используя автоматическую маршрутизацию URL.
# Кроме того, мы включаем URL-адреса для входа в доступный для просмотра API.
urlpatterns = [
    путь ('', включить (router.URL-адреса)),
    путь ('api-auth /', include ('rest_framework.urls', namespace = 'rest_framework'))
]
  

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

Опять же, если нам нужен больший контроль над URL-адресами API, мы можем просто перейти к использованию обычных представлений на основе классов и явной записи URL-адреса conf.

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

Разбивка на страницы позволяет вам контролировать количество возвращаемых объектов на страницу. Чтобы включить его, добавьте следующие строки в tutorial / settings.py

  REST_FRAMEWORK = {
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
    'PAGE_SIZE': 10
}
  

Добавьте rest_framework в INSTALLED_APPS .Модуль настроек будет в tutorial / settings.py

  INSTALLED_APPS = [
    ...
    'rest_framework',
]
  

Хорошо, мы закончили.


Теперь мы готовы протестировать созданный нами API. Запустим сервер из командной строки.

  python manage.py runserver
  

Теперь мы можем получить доступ к нашему API из командной строки, используя такие инструменты, как curl ...

  bash: curl -H 'Принять: application / json; indent = 4 '-u admin: password123 http: // 127.0.0.1: 8000 / пользователи /
{
    «count»: 2,
    "следующий": ноль,
    "предыдущий": ноль,
    "полученные результаты": [
        {
            "электронная почта": "[email protected]",
            "группы": [],
            "url": "http://127.0.0.1:8000/users/1/",
            "имя пользователя": "админ"
        },
        {
            "электронная почта": "[email protected]",
            "группы": [],
            "url": "http://127.0.0.1:8000/users/2/",
            "имя пользователя": "том"
        }
    ]
}
  

Или с помощью средства командной строки httpie...

  bash: http -a admin: password123 http://127.0.0.1:8000/users/

HTTP / 1.1 200 ОК
...
{
    «count»: 2,
    "следующий": ноль,
    "предыдущий": ноль,
    "полученные результаты": [
        {
            "электронная почта": "[email protected]",
            "группы": [],
            "url": "http: // localhost: 8000 / users / 1 /",
            "имя пользователя": "пол"
        },
        {
            "электронная почта": "[email protected]",
            "группы": [],
            "url": "http://127.0.0.1:8000/users/2/",
            "имя пользователя": "том"
        }
    ]
}
  

Или напрямую через браузер, перейдя по URL-адресу http: // 127.0.0.1: 8000 / пользователи / ...

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

Отлично, это было просто!

Если вы хотите получить более глубокое представление о том, как фреймворк REST сочетается друг с другом, перейдите к руководству или начните просматривать руководство по API.

Введение · HonKit

Это произведение находится под лицензией Creative Commons Attribution-ShareAlike 4.0 Международная лицензия.
Чтобы просмотреть копию этой лицензии, посетите https://creativecommons.org/licenses/by-sa/4.0/

.

Добро пожаловать

Добро пожаловать в учебник Django Girls! Мы рады видеть вас здесь. 🙂 В этом руководстве мы отправим вас в путешествие под капотом веб-технологий, предлагая вам взглянуть на все части, которые необходимо объединить, чтобы заставить Интернет работать так, как мы его знаем.

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

Введение

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

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

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

Мы надеемся, что сможем заставить вас полюбить технологии так же сильно, как и мы!

Что вы узнаете во время обучения?

После того, как вы закончите обучение, у вас будет небольшое работающее веб-приложение: ваш собственный блог.Мы покажем вам, как разместить его в Интернете, чтобы другие увидели вашу работу!

Это будет (более или менее) выглядеть так:

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

Ладно, начнем сначала…

Следуя руководству дома

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

В каждой уже рассмотренной главе есть ссылка на нужный видеоролик.

О нас и содействии

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

Хотите помочь нам перевести руководство на другие языки?

В настоящее время переводы хранятся на платформе Crowdin.com по адресу:

https://crowdin.com/project/django-girls-tutorial

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

.

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

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