Django python: The Web framework for perfectionists with deadlines

Содержание

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

Последнее обновление: 07.03.2018

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

  1. Глава 1. Введение в Django

    1. Что такое Django

    2. Установка и настройка Django

    3. Создание первого проекта

    4. Создание первого приложения

  2. Глава 2. Представления и маршрутизация

    1. Обработка запроса

    2. Определение маршрутов и функции path и re_path

    3. Параметры представлений

    4. Параметры строки запроса

    5. Переадресация и отправка статусных кодов

  3. Глава 3. Шаблоны

    1. Создание и использование шаблонов

    2. Передача данных в шаблоны

    3. Статические файлы

    4. TemplateView

    5. Конфигурация шаблонов

    6. Расширение шаблонов

    7. Встроенные теги

  4. Глава 4. Формы Django

    1. Определение форм

    2. Типы полей формы

    3. Настройка формы и ее полей

    4. Валидация данных

    5. Детальная настройка полей формы

    6. Стилизация полей форм

  5. Глава 5. Модели

    1. Создание моделей и миграции базы данных

    2. Типы полей моделей

    3. CRUD. Операции с моделями

    4. Создание и получение объектов модели

    5. Редактирование и удаление объектов модели

    6. Отношение один ко многим (One to Many)

    7. Отношение многие ко многим (Many to Many)

    8. Отношение один к одному (One to one)

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

Плюсы и минусы Django

Вы разработчик? Тогда очевидно, что вам нужен лучший язык программирования. Но определение лучшего языка и инструментов – непростая задача. Слышали ли вы о Django? Или, по крайней мере, знакомы ли вы с его минусами и плюсами? Используя данный инструмент, кажется, что все становится на свои места очень быстро и эффективно.

Почему Django?

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

Django в центре внимания

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

Python и его популярность

Плюсы и минусы Django

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

  • Простота в изучении
  • Чистота и читаемость
  • Разносторонность
  • Быстрота написания
  • Цельный дизайн

Плюсы и минусы Django

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

Плюсы Django

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

  • Быстрота: Django был разработан, чтобы помочь разработчикам создать приложение настолько быстро, на сколько это возможно. Это включает в себя формирование идеи, разработку и выпуск проекта, где Django экономит время и ресурсы на каждом из этих этапов. Таким образом, его можно назвать идеальным решением для разработчиков, для которых вопрос дедлайна стоит в приоритете.
  • Полная комплектация: Django работает с десятками дополнительных функций, которые заметно помогают с аутентификацией пользователя, картами сайта, администрированием содержимого, RSS и многим другим. Данные аспекты помогают осуществить каждый этап веб разработки.
  • Безопасность: Работая в Django, вы получаете защиту от ошибок, связанных с безопасностью и ставящих под угрозу проект. Я имею ввиду такие распространенные ошибки, как инъекции SQL, кросс-сайт подлоги, clickjacking и кросс-сайтовый скриптинг. Для эффективного использования логинов и паролей, система пользовательской аутентификации является ключом.
  • Масштабируемость: фреймворк Django наилучшим образом подходит для работы с самыми высокими трафиками. Следовательно, логично, что великое множество загруженных сайтов используют Django для удовлетворения требований, связанных с трафиком.
  • Разносторонность: менеджмент контента, научные вычислительные платформы, даже крупные организации – со всем этим можно эффективно справляться при помощи Django.

PHP против Python

Плюсы и минусы Django

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

  1. Лучший дизайн: PHP был разработан специально для веб разработки, но Django базируется на более надежном языке. Хороший код проще написать в Python, в сравнении с PHP.
  2. Python и долгосрочность: PHP очень хорош в краткосрочной перспективе. Однако, когда вы проходите начальную фазу, вам может понадобиться язык с более глубокими возможностями. Здесь Python выступает в роли явного фаворита.
  3. Лучший Веб Фреймворк: Рынок наполнен великим множеством замечательных фреймворков. Однако это не касается долгосрочной ценности. И Django в данном случае является явным победителем. Хотя и PHP может похвастаться со своими Laravel, Yii, Symfony.
  4. Фактор читаемости: PHP следует классическому подходу, но у Python более строгие правила идентификации. Отсюда выбирайте, что лучше.
  5. Простой синтаксис: написание кода в Python происходит намного проще и быстрее.
  6. Инструменты для лечения багов: пакеты Python содержат все необходимые инструменты для исправления неполадок.
  7. Управление пакетам: в Python это реализовано весьма эффективно: вы можете писать, читать и делиться пакетами таким образом, что другие разработчики могут использовать их в других приложениях.
  8. Говорим Python, подразумеваем «Общее Назначение»: В то время как PHP используется для веб разработки, Python может быть использован для различных целей, также стоит отметить, что вы можете работать как онлайн, так и оффлайн.

Минусы

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

  • Использование шаблона маршрутизации с указанием URL
  • Django слишком монолитный
  • Все базируется на ORM Django
  • Компоненты развертываются совместно
  • Необходимо умение владеть всей системой для работы

Подведем итоги

Существует очень много плюсов и минусов Django, не упомянутых в данной статье, однако, когда рассматривается проект с дедлайном, использование Django для решения поставленной задачи – грамотное решение. Более того, для ускорения рабочего процесса, есть возможность установить пользовательскую кастомную конфигурацию. Ранее, когда разработка кода требовала большого количества времени, такая возможность позволила заметно упростить этот процесс. Стоимость разработки снизилась практически на 80%, а необходимость в аутсорсинге вообще отпала. Но погодите, делает ли это Django лучшим? Что-ж, в некоторых странах определенно попытаются передать Django на аутсорс. Кому? Скорее всего, низкоквалифицированным и дешевым разработчикам.

Эффективный Django. Часть 1 / Хабр

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


  • Введение
  • Эффективный Django. Руководство
  • Тестирование в Django
  • Понимание Middleware’ов
  • Базы данных и модели
  • Представления-классы (CBV)
  • Формы

Django — это популярный, мощный фреймворк на языке Python. Он имеет множество «батареек«, и позволяет сразу начать разработку. Однако вся эта мощь означает, что вы можете написать низкопробный код, который будет казаться рабочим. Так что же подразумевается под Эффективным Django? Под Эффективным Django будем понимать использование Django таким образом, чтобы написанный код был связным, тестируемым и масштабируемым. Что же каждое из этих слов значит?

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

Это непосредственно относится к написанию тестируемого кода: код, который делает много вещей, достаточно часто является чересчур сложным для тестирования. Когда я ловлю себя на мысли: «Хорошо, этот кусок кода слишком сложен, чтобы писать для него тесты — это просто не стоит потраченных усилий» — вот сигнал к тому, чтобы вернутся назад и сосредоточиться на упрощении. Тестируемый код — такой код, который позволяет просто писать для него тесты; код, в котором легко найти проблемы.

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

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

Эти документы являются сочетанием заметок и примеров подготовленных для PyCon 2012, PyOhio 2012, и PyCon 2013, а также для web-разработки Eventbrite. Я все еще работаю над объединением их в один документ, но надеюсь вы найдете их полезными.

Примеры кода для этого руководства доступны на github’е. Отзывы, предложения и вопросы можете присылать на [email protected]

Этот документ доступен на сайте, а также в форматах PDF и EPub.

Видео этого руководства с PyCon можно посмотреть на YouTube.

1.1. Ваша среда разработки

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

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

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

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

1.1.1. Изоляция

  • Мы хотим избежать использования неизвестных зависимостей или неизвестных версий.
  • virtualenv предоставляет простой путь для работы над проектом, без использования системных site-packages.

1.1.2. Предопределенность

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

Вы можете точно определить версии используя либо версию пакета на PyPI, либо же определенную ревизию (SHA в git, номер ревизии в Subversion и т. д.). Это гарантирует вам возможность получить в точности те же версии пакетов, которые вы используете при тестировании.

1.1.3. Сходство

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

1.2. Настройка вашего окружения

1.2.1. Создание чистого рабочего пространства

Примечание переводчика:
Для начала создадим каталог (tutorial), в котором будем работать:

~$ mkdir tutorial
~$ cd tutorial
~/tutorial$ mkdir venv project

В каталоге venv будет находится наше виртуальное окружение, а в каталоге project — Django-проект

~/tutorial$ virtualenv --prompt="(venv:tutorial)" ./venv/

New python executable in ./venv/bin/python
Installing setuptools............done.
Installing pip...............done.

~/tutorial$ source ./venv/bin/activate
(venv:tutorial)~/tutorial$

1.2.2. Создание файла зависимостей

Создайте файл requirements.txt в директории tutorial с единственной строкой (зависимостью) в нем:

Django==1.6.7

Примечание переводчика:
В случае, если вы хотите использовать последнюю версию Django (1.7 — на момент написания перевода) — вместо строки Django==1.6.7 оставьте просто Django — pip установит последнюю доступную версию.

1.2.3. Установка зависимостей

А теперь мы можем использовать pip для установки зависимостей:

(venv:tutorial)~/tutorial$ pip install -U -r requirements.txt

Downloadping/unpacking Django==1.6.7 (from -r requirements.txt (line 1))
  Downloading Django-1.6.7.tar.gz (6.6MB): 6.6MB downloaded
  Running setup.py egg_info for package Django

    warning: no previously-included files matching ’__pycache__’ found under directory ’*’
    warning: no previously-included files matching ’*.py[co]’ found under directory ’*’
Installing collected packages: Django
  Running setup.py install for Django
    changing mode of build/scripts-2.7/django-admin.py from 644 to 755

    warning: no previously-included files matching ’__pycache__’ found under directory ’*’
    warning: no previously-included files matching ’*.py[co]’ found under directory ’*’
    changing mode of /home/nathan/p/edt/bin/django-admin.py to 755
Successfully installed Django
Cleaning up...

1.3. Начало проекта Django

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

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

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

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

Django устанавливает в систему скрипт django-admin.py для обработки задач скаффолдинга. Для создания файлов проекта используется задача startproject. Мы определим имя проекта и имя директории, в которой хотим разместить проект. Так как, мы уже находимся в изолированной среде, можно просто написать:

Примечание переводчика:
Перейдем директорию ~/tutorial/project/ и в дальнейшем будем работать только из этой директории (под $ далее будем подразумевать ~/tutorial/project/$):

(venv:tutorial)~/tutorial/$ cd project
(venv:tutorial)$ django-admin.py startproject addressbook .

Созданный проект имеет следующую структуру

manage.py
./addressbook
    __init__.py
    settings.py
    urls.py
    wsgi.py

1.3.2. Скаффолдинг проекта

  • manage.py — является ссылкой на скрипт django-admin, но с уже предустановленными переменными окружения, указывающими на ваш проект, как для чтения настроек оттуда, так и для управления им при необходимости;
  • settings.py — здесь находятся настройки вашего проекта. Файл уже содержит несколько разумных настроек, но база данных не указана;
  • urls.py — содержит URL’ы для маппирования (отображения) представлений: мы вскоре (в дальнейших главах) поговорим об этом подробнее;
  • wsgi.py — это WSGI обёртка для вашего приложения. Этот файл используется сервером разработки Django и возможно другими контейнерами, такими как mod_wsgi, uwsgi и др. на «боевом» сервере.

1.3.3. Создание приложения

(venv:tutorial)$ python ./manage.py startapp contacts

Созданное приложение имеет следующую структуру:

./contacts
    __init__.py
    models.py
    tests.py
    views.py

  • Начиная с Django 1.4, приложения размещаются внутри пакета с проектом. Это замечательное улучшение, особенно когда приходит время разворачивать проект на «боевом» сервере;
  • models.py будет содержать Django ORM-модели для вашего приложения;
  • views.py будет содержать код представлений;
  • tests.py будет содержать написанные вами модульные и интеграционные тесты.
  • Django 1.7: admin.py будет содержать модель для административного интерфейса.
  • Django 1.7: migrations/ содержит файлы миграций

Примечание переводчика:
На текущий момент наша директория ~/tutorial/ содержит файл зависимостей (requirements.txt), директорию с виртуальным окружением (venv/), один проект (project/addressbook), одно приложение (project/contacts) и имеет следующее содержание:

~/tutorial/
	requirements.txt
	venv/
		...
	project/
		manage.py
		addressbook/
			__init__.py
			settings.py
			urls.py
			wsgi.py
		contacts/
			__init__.py
			models.py
			tests.py
			views.py

2.1. Конфигурирование базы данных

Django поддерживает «из коробки» MySQL, PostgreSQL, SQLite3 и Oracle. SQLite3 входит в состав Python начиная с версии 2.5, так что мы будем использовать его в нашем проекте (для простоты). Если вы хотите, к примеру, использовать MySQL, то нужно добавить mysql-python в ваш requirements.txt.

Для того чтобы в качестве базы данных использовать SQLite, отредактируйте определение DATABASES в файле addressbook/settings.py. Файл settings.py содержит настройки Django для нашего проекта. В нем есть несколько настроек, которые вы обязаны указать — например DATABASES — а так же другие, необязательные, настройки. Django устанавливает некоторые настройки сам, когда генерирует проект. Документация содержит полный список настроек. К тому же вы можете добавить свои собственные настройки, если это необходимо.

Для использования SQLite нам нужно указать движок (ENGINE) и имя базы (NAME). SQLite интерпертирует имя базы как имя файла для базы данных:

DATABASES = {
    'defaults': {
	    'ENGINE': 'django.db.backends.sqlite3,' # ’postgresql_psycopg2’, ’mysql’, ’sqlite3’ or ’oracle'.
		'NAME': os.path.join(BASE_DIR, 'address.db'),
		'USER': '',     # Not used with sqlite3.
		'PASSWORD': '', # Not used with sqlite3.
		'HOST': '',     # Set to empty string for localhost. Not used with sqlite3.
		'PORT': '',     # Set to empty string for default. Not used with sqlite3.
	}
}

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

Вам редко придется непосредственно импортировать файл настроек: Django импортирует его за вас, и делает настройки доступными как django.conf.settings. Вы, как правило, импортируете настройки из django.conf:

from django.conf import settings

2.2. Создание модели

Модели Django отображают (грубо говоря) таблицы базы данных, и предоставляют место для инкапсулирования бизнес-логики. Все модели являются наследниками базового класса Model и содержат поля определений. Давайте создадим простую модель Contacts для нашего приложения в файле contacts/models.py:

from django.db import models

class Contact(models.Model):

    first_name = models.CharField(
        max_length=255,
    )
    last_name = models.CharField(
        max_length=255,
    )
	
    email = models.EmailField()

	def __str__(self):

	    return ' '.join([
            self.first_name,
            self.last_name,
        ])

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

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

Примечание переводчика:

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

Примечание переводчика:

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

(venv:tutorial)$ python ./manage.py syncdb

Creating tables ...
Creating table django_admin_log
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_groups
Creating table auth_user_user_permissions
Creating table auth_user
Creating table django_content_type
Creating table django_session

You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'bjakushka'):
Email address: 
Password:
Password (again):
Superuser created successfully.
Installing custom SQL ...
installing indexes ...
Installed 0 object(s) from 0 fixture(s)

(venv:tutorial)$

Примечание переводчика:

Если вы используете Django версии 1.7 и выше — вывод будет следующий:

(venv:tutorial)$ python ./manage.py migrate

Opperation to perform:
    Apply all migrations: admin, contenttypes, auth, sessions
Running migrations:
    Applying contenttypes.0001_initial... OK
    Applying auth.0001_initial... OK
    Applying admin.0001_initial... OK
    Applying sessions.0001_initial... OK

(venv:tutorial)$ 

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

Настройка INSTALLED_APPS содержит список приложений, используемых в проекте. Этот список содержит в себе строки, которые отображают пакеты Python. Django будет импортировать каждый из указанных пакетов, а потом смотреть модуль models. Давайте добавим наше приложение contacts в настройки проекта (addressbook/settings.py):

INSTALLED_APPS = (
  'django.contrib.admin',
  'django.contrib.auth',
  'django.contrib.contenttypes',
  'django.contrib.sessions',
  'django.contrib.messages',
  'django.contrib.staticfiles',
  
  'contacts',
)

После этого запустите syncdb снова:

Примечание переводчика:

Для Django версии 1.7 и выше вам нужно будет запустить сначала команду makemigrations — для создания миграций на основе изменений в моделях, а после этого выполнить команду migrate — для того чтобы применить созданные миграции.

(venv:tutorial)$ python ./manage.py syncdb

Creating tables ...
Creating table contacts_contact
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)

(venv:tutorial)$

Примечание переводчика:

Вывод для Django 1.7 и выше:

(venv:tutorial)$ python ./manage.py makemigrations

Migrations for 'contacts':
    0001_initial.py:
        - Create model Contact

(venv:tutorial)$ python ./manage.py migrate

Opperation to perform:
    Apply all migrations: admin, contenttypes, sessions, auth, contacts
Running migrations:
    Applying contacts.0001_initial... OK

(venv:tutorial)$ 

Заметьте, что Django создает таблицу с именем contacts_contact: по умолчанию Dj ango дает таблицам имена используя комбинацию имени приложения и имени модели. Вы можете изменить это с помощью опций модели Meta.

2.3. Взаимодействие с моделью

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

(venv:tutorial)$ python ./manage.py shell
Python 2.7.3 (default, Mar 14 2014, 11:57:14)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from contacts.models import Contact
>>> Contact.objects.all()
[]
>>> Contact.objects.create(first_name='Nathan', last_name='Yergler')
<Contact: Nathan Yergler>
>>> Contact.objects.all()
[<Contact: Nathan Yergler>]
>>> nathan = Contact.objects.get(first_name='Nathan')
>>> nathan
<Contact: Nathan Yergler>
>>> print nathan
Nathan Yergler
>>> nathan.id
1

Здесь использовалось несколько новых штук. Во-первых, команда manage.py shell запускает для нас интерактивную оболочку Python’а с правильно установленными путями для Django. Если вы попробуете запустить интерпретатор Python и просто импортировать ваше приложения, будет выброшено исключение, потому что Django не знает, какие настройки использовать, и не может отобразить экземпляры модели на базу данных.

Во-вторых, здесь использовалось свойство objects нашей модели. Это менеджер модели. Так, если один экземпляр модели является аналогией для строки в базе, то менеджер модели — аналогией для таблицы. По умолчанию менеджер модели предоставляет функциональность запросов и может быть настроен. Когда мы вызываем all(), filter() или сам менеджер, возвращается объект QuerySet. QuerySet является итерируемым объектом и загружает данные из базы по необходимости.

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

2.4. Написание тестов

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

from django.test import TestCase

from contacts.models import Contact

class ContactTests(TestCase):
    """Contact model tests."""
	
    def test_str(self):
	
        contact = Contact(first_name='John', last_name='Smith')
        self.assertEquals(
            str(contact),
            'John Smith',
        )

Вы можете запустить тесты для вашего приложения используя команду manage.py test:

(venv:tutorial)$ python ./manage.py test

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

Примечание переводчика:
В нашем случае (при использовании версии Django 1.6.7) предыдущий абзац несколько устарел: запустится только один тест — тот который мы создали. Вывод команды будет такой как указано ниже.

Если же вы захотите запустить тесты для определенного приложения — укажите имя приложения в команде:

(venv:tutorial)$ python manage.py test contacts

Creating test database for alias ’default’...
.
----------------------------------------------------------------------
Ran 1 tests in 0.001s

OK
Destroying test database for alias ’default’...

(venv:tutorial)$

Еще одна интересная вещь на заметку, прежде чем двигаться дальше — первая и последняя строка вывода: Creating test database и Destroying test database. Некоторым тестам необходим доступ к базе данных, и поскольку мы не хотим мешать тестовые данные с «реальными» (по разным причинам, не последней из которых является предопределенность), Django услужливо создает тестовую базу для нас, прежде чем запускать тесты. По существу, создается новая база данных, и потом запускается syncdb для нее. Если тестовый класс является потомком класса TestCase (как у нас), Django так же сбросит данные в значения по умолчанию после запуска каждого теста, так что изменения в одном из тестов не затронут другие.

2.5. Резюме

  • Модель определяет поля в таблице, и содержит бизнес-логику.
  • Команда syncdb создает таблицы в вашей базе данных из моделей. В Django версии 1.7 и выше вместо команды syncdb необходимо использовать сначала команду makemigrations — для создания миграций, а после этого команду migrate — для внесение изменений в базу.
  • Менеджер модели позволяет вам оперировать коллекциями экземпляров: запросы, создание и т. д..
  • Пишите модульные тесты для методов, которые вы добавили в модель.
  • Команда управления test запускает модульные тесты на выполнение.

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

(venv:tutorial)$ python ./manage.py runserver 0.0.0.0:8080

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

Я использую для разработки домашний сервер с внутренним IP 192.168.1.51. Так что для того что-бы увидеть результат работы сервера разработки в браузере я захожу по адресу http://192.168.1.51:8080/. Вы же должны подставить адрес своего сервера.


Как думаете, нужно ли продолжать перевод остальных глав? Оказался ли перевод для Вас полезен?

Буду рад конструктивной критике в комментариях.

Об ошибках и неточностях перевода прошу сообщать в личном сообщении.

Использованное в начале поста изображение создано как вариация изображения пользователя MaGIc2laNTern

Урок 1 / Установка Django / Блог на Django 2.0 ~ PythonRu

Если Django уже установлен, можете пропустить этот раздел и переходить к части «Создание первого проекта». Django — это пакет Python, поэтому он может быть установлен в любой среде Python. Вот как установить фреймворк для локальной разработки.
Для Django 2.0 обязательны Python 3.4 или старше. Дальше будет использоваться Python 3.6.5. Для Linux или macOS, то Python, вероятно уже установлен. Если Windows — то инструкция по установке здесь.

Проверить установлен ли Python на компьютере можно, введя python в командной строке. Если в ответ отобразится что-то подобное, то Python установлен:

Python 3.7.3 (default, Mar 27 2019, 17:13:21) 
[MSC v.1915 64 bit (AMD64)] :: Anaconda custom (64-bit) on win32

Type "help", "copyright", "credits" or "license" for more information.
>>>          

Если он не установлен или установлена версия Python 3.4 или младше, то нужно перейти в раздел “Скачать и установить Python”, найти руководство под свою OS и следовать инструкциям.

Для Python 3 не нужна база данных. Эта версия Python поставляется со встроенной базой данных SQLite. Это облегченная база данных, которая подходит для разработки на Django. Если же нужно будет разворачивать приложение в производственной среде, то понадобится более продвинутое решение: PostgreSQL, MySQL или Oracle. Больше узнать о том, как заставить базу данных работать с Django, можно по этой ссылке: https://docs.djangoproject.com/en/2.0/topics/install/#database-installation.

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

Рекомендуется использовать virtualenv для создания виртуальной среды Python так, чтобы можно было спокойно использовать разные версии пакетов для разных проектов. Это практичнее, чем устанавливать пакеты в Python напрямую в систему. Еще одно преимущество virtualenv — для установки пакетов Python не нужны права администратора. Запустите следующую команду в командной строке для установки virtualenv:

pip install virtualenv

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

Профессия Data ScientistПрофессия Data Scientist

virtualenv my_env

Это создаст папку my_env вместе со средой Python. Любые библиотеки Python, установленные с активированной виртуальной средой Python, будут установлены в папку my_env/lib/python3.7/site-packages.

Если в системе была предустановлена Python 2.X, а вы установили Python 3.X, то нужно указать virtualenv, чтобы он работал с последней версией.

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

$ which python3 /Library/Frameworks/Python.framework/Versions/3.7/bin/python3 
$ virtualenv my_env -p
/Library/Frameworks/Python.framework/Versions/3.7/bin/python3

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

source my_env/bin/activate

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

(my_env) username:~$

Отключить виртуальную среду можно с помощью команды deactivate.

Больше о virtualenv можно узнать по ссылке https://virtualenv.pypa.io/en/latest/.

Поверх virtualenv можно также использовать virtualenvwrapper. Этот инструмент предоставляет оболочки, с помощью которых проще создавать и управлять виртуальной средой. Загрузить его можно здесь: https://virtualenvwrapper.readthedocs.io/en/latest/.

Установка Django с помощью pip

Система управления пакетами pip — рекомендуемый способ установки Django. В Python 3.6+ она предустановлена, а инструкции для установки можно найти по ссылке https://pythonru.com/baza-znanij/ustanovka-pip-dlja-python-i-bazovye-komandy.

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

pip install Django==2.0.5

Django установится в папку Python под названием site-packages/ активной виртуальной среды.

Теперь нужно проверить, успешно ли прошла установка. Для этого в командной строке необходимо ввести python, импортировать Django и проверить его версию следующим образом:

>>> import django 
>>> django.get_version() 
'2.0.5'

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

Django можно установить и другими способами. Полный гайд по установке можно найти здесь: https://docs.djangoproject.com/en/2.0/topics/install/.

основные операции Django, работа с Django

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

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

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

Что такое Django?

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

Установка Django

Лучше установить Django в виртуальном окружении — virtualenv или pipenv, где ваш проект будет изолирован от других. Большинство команд, приведённых ниже, предполагают, что вы работаете в виртуальной среде.

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

venv:

$ python –m venv ll_env



$ python –m venv ll_env

pipenv:

Активировать среду

venv, macOS and Linux:

$ source ll_env/bin/activate



$ source ll_env/bin/activate

venv, Windows:

> ll_env\Scripts\activate



> ll_env\Scripts\activate

pipenv:

Установить Django в активную среду

venv:

(ll_env)$ pip install Django



(ll_env)$ pip install Django

pipenv:

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

Чтобы начать работу, мы создадим новый проект и базу данных, а затем запустим веб-сервер. Во всех примерах ниже проект будет называться learning_log.

Создать новый проект

$ django-admin startproject learning_log .



$ django-admin startproject learning_log .

Создать базу данных

$ python manage.py migrate



$ python manage.py migrate

Посмотреть проект

После выполнения этой команды вы можете просмотреть проект по адресу http://localhost:8000/.

$ python manage.py runserver



$ python manage.py runserver

Создать новое приложение

Проект Django состоит из одного или нескольких приложений.

$ python manage.py startapp learning_logs



$ python manage.py startapp learning_logs

Перезапуск сервера разработки

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

$ python manage.py runserver



$ python manage.py runserver

Работа с моделями

Данные в проекте Django представлены в виде набора моделей — объектов Python, определяющих структуру хранения этих данных.

Определение модели

Чтобы определить модель для вашего приложения, измените файл models.py, созданный в папке приложения. Метод __str __() сообщает Python, как отображать экземпляр модели в строковом представлении. Django использует этот механизм для отображения объектов в формах.

from django.db import models
class Topic(models.Model):
«»»Тема, которую изучает пользователь.»»»
text = models.CharField(max_length=200)
date_added = models.DateTimeField(
auto_now_add=True)

def __str__(self):
return self.text



from django.db import models

class Topic(models.Model):

    «»»Тема, которую изучает пользователь.»»»

    text = models.CharField(max_length=200)

    date_added = models.DateTimeField(

        auto_now_add=True)

 

def __str__(self):

     return self.text

Активация модели

Для использования модели приложение должно быть добавлено в список INSTALLED_APPS, который хранится в файле settings.py проекта.

INSTALLED_APPS = [
# Мои приложения.
‘learning_logs’,
# Дефолтные приложения Django.
‘django.contrib.admin’,
]



INSTALLED_APPS = [

    # Мои приложения.

    ‘learning_logs’,

    # Дефолтные приложения Django.

    ‘django.contrib.admin’,

]

Миграция базы данных

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

$ python manage.py makemigrations learning_logs

$ python manage.py migrate



$ python manage.py makemigrations learning_logs

 

$ python manage.py migrate

Создание суперпользователя

Суперпользователь — это учётная запись с доступом ко всем компонентам проекта.

$ python manage.py createsuperuser



$ python manage.py createsuperuser

Регистрация модели

Вы можете зарегистрировать свою модель в панели администратора Django, чтобы упростить работу с данными в проекте. Для этого измените файл admin.py. Панель администратора находится по адресу http://localhost:8000/admin/.

from django.contrib import admin
from .models import Topic

admin.site.register(Topic)



from django.contrib import admin

from .models import Topic

 

admin.site.register(Topic)

Создание новой модели

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

Определение модели с внешним ключом:

class Entry(models.Model):
topic = models.ForeignKey(Topic,
on_delete=models.CASCADE)
text = models.TextField()
date_added = models.DateTimeField(
auto_now_add=True)

def __str__(self):
return f»{self.text[:50]}…»



class Entry(models.Model):

    topic = models.ForeignKey(Topic,

        on_delete=models.CASCADE)

    text = models.TextField()

    date_added = models.DateTimeField(

        auto_now_add=True)

 

   def __str__(self):

        return f»{self.text[:50]}…»

Создание простой домашней страницы

Пользователи взаимодействуют с проектом через веб-страницы. Мы создадим простую домашнюю страницу без данных. Любой странице обычно нужен URL, представление (view) и шаблон (template). Представление — функция Python, которая принимает HTML-запрос и возвращает ответ на него. Шаблон — специальный набор инструкций, позволяющий динамически генерировать HTML.

Сопоставление URL-адресов проекта

Основной файл проекта urls.py сообщает Django, где найти файлы urls.py, связанные с каждым приложением в проекте.

from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path(‘admin/’, admin.site.urls),
path(», include(‘learning_logs.urls’)),
]



from django.contrib import admin

from django.urls import path, include

urlpatterns = [

    path(‘admin/’, admin.site.urls),

    path(», include(‘learning_logs.urls’)),

]

Сопоставление URL-адресов приложения

Файл urls.py в приложении сообщает Django, какое представление использовать для каждого URL-адреса в этом приложении. Вам нужно создать этот файл самостоятельно и сохранить его в папке приложения.

from django.urls import path
from . import views

app_name = ‘learning_logs’
urlpatterns = [
# Домашняя страница.
path(», views.index, name=’index’),
]



from django.urls import path

from . import views

 

app_name = ‘learning_logs’

urlpatterns = [

    # Домашняя страница.

    path(», views.index, name=’index’),

]

Создание простого представления

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

from django.shortcuts import render

def index(request):
«»»Домашняя страница.»»»
return render(request,
‘learning_logs/’)



from django.shortcuts import render

 

def index(request):

    «»»Домашняя страница.»»»

    return render(request,

        ‘learning_logs/’)

Написание простого шаблона

Шаблон устанавливает структуру страницы. Создайте папку с именем templates в директории проекта. Внутри templates создайте ещё одну папку с тем же именем, как у приложения. Здесь должны быть сохранены все файлы шаблонов. Шаблон домашней страницы будет сохранён как learning_logs/templates/learning_logs/.

Наследование шаблонов

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

Родительский шаблон

Родительский шаблон определяет общие элементы для набора страниц, а также уникальные блоки для отдельных страниц.

<p>
<a href=»{% url ‘learning_logs:index’ %}»>
Learning Log
</a>
</p>

{% block content %}{% endblock content %}



<p>

  <a href=»{% url ‘learning_logs:index’ %}»>

    Learning Log

  </a>

</p>

 

{% block content %}{% endblock content %}

Дочерний шаблон

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

{% extends ‘learning_logs/base.html’ %}

{% block content %}

<p>
Learning Log helps you keep track of your learning, for any topic you’re learning about.
</p>

{% endblock content %}



{% extends ‘learning_logs/base.html’ %}

 

{% block content %}

 

  <p>

    Learning Log helps you keep track of your learning, for any topic you’re learning about.

  </p>

 

{% endblock content %}

Отступы в шаблоне

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

Создание страницы с данными

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

Параметры URL

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

urlpatterns = [
# —snip—
path(‘topics/<int:topic_id>/’, views.topic,
name=’topic’),
]


urlpatterns = [

    # —snip—

    path(‘topics/<int:topic_id>/’, views

All about Django framework and its libraries

Документация по фреймворку Django

Django dev

Django 3.1

Django 3.0

Django 2.2

Django (Джанго) — свободный фреймворк для веб-приложений на языке Python, использующий шаблон проектирования MVC. Проект поддерживается организацией Django Software Foundation.

Сайт на Django строится из одного или нескольких приложений, которые рекомендуется делать отчуждаемыми и подключаемыми. Это одно из существенных архитектурных отличий этого фреймворка от некоторых других (например, Ruby on Rails). Один из основных принципов фреймворка — DRY (англ. Don’t repeat yourself).

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

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

Channels — расширение для асинхронной работы с Django

Channels 2.4.0

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

asgiref — спецификация и утилиты ASGI

ASGI — спецификация и утилиты 3.2.3

ASGI (Asynchronous Server Gateway Interface) является духовным наследником WSGI, предназначенным для обеспечения стандартного интерфейса между асинхронными веб-серверами, платформами и приложениями Python.

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

Документация по Python Social Auth

Python Social Auth 0.1.0

Python Social Auth — это простой в настройке механизм социальной аутентификации/регистрации с поддержкой нескольких платформ и провайдеров аутентификации. Созданный с использованием базового кода из django-social-auth, он реализует общий интерфейс для определения новых поставщиков аутентификации от третьих сторон и для обеспечения поддержки большего количества платформ и ORM.

Python Social Auth — документация на русском языке.

Django Crispy Forms — лучшая работа с формами

Django Crispy Forms 1.9.1

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

Виджет Select2 для Django

Django Select2 latest

Django Select2 stable

Django Select2 7.4.2

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

Django Simple History

Django Simple History 2.10.0

Хранит историю моделей и позволяет просматривать/отменять изменения из админки.

Сегодня команда Django выпустила версии 3.0.8 и 2.2.14 с исправлениями ошибок.

Пакет релиза и контрольные суммы доступны на странице загрузок, а также из индекса пакетов Python. Идентификатор ключа PGP, используемый для этого выпуска, — Мариуш Фелисиак: 2EF56372BA48CD1B.

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

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

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

Стала доступна версия Django 3.1 alpha 1. Она представляет собой первую стадию в цикле выпуска 3.1 и дает вам возможность испытать изменения, которые появятся в Django 3.1.

Почему Flask или Django является распространенным вопросом? Если бы вы искали «лучший язык программирования для изучения» в Google, он сказал бы, что Python является одним из наиболее часто рекомендуемых языков для начинающих. Это не должно вызывать удивления, поскольку Python является одним из самых удобных языков на сегодняшнем рынке и является основой таких компаний, как Instagram, Pinterest и Spotify.

Сегодня мы выпустили релиз 3.0.6 с исправлением ошибок.

Пакет релиза и контрольные суммы доступны на нашей странице загрузок, а также из индекса пакетов Python. Идентификатор ключа PGP, использованный в этом выпуске: Mariusz Felisiak: 2EF56372BA48CD1B.

Четвертый год подряд JetBrains PyCharm сотрудничает с Django Software Foundation в рамках акции «Get PyCharm, Support Django», где в течение 28 дней пользователи могут приобретать новые индивидуальные лицензии PyCharm Professional за 30%, в то время как полная выручка поступает на DSF. Даже в нынешних экономических условиях кампания снова имела огромный успех в этом году.

Сегодня выпустили версии 3.0.5 и 2.2.12 с исправлениями ошибок.

Пакет релиза и контрольные суммы доступны на странице загрузок, а также из индекса пакетов Python. Идентификатор ключа PGP, используемый для этого выпуска, — Карлтон Гибсон: E17DF5C82B4F9D00.

Джанго 1.11 достиг конца расширенной поддержки.

Существует множество проектов, с помощью которых вы можете установить реплику сервиса Amazon S3 в локальной среде. Я использую проект под названием S3 Ninja. Позвольте мне рассказать вам, как сделать копию S3 с помощью простых шагов.

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

В соответствии с политикой безопасности, команда Django выпускает Django 3.0.4, Django 2.2.11 и Django 1.11.29. Эти выпуски решают проблему безопасности, подробно описанную ниже. Мы призываем всех пользователей Django обновиться как можно скорее. CVE-2020-9402: потенциальное внедрение SQL через параметр допуска в функциях и агрегатах GIS в Oracle. GIS-функции и агрегаты в Oracle подвергались внедрению SQL с использованием специально созданного допуска.

robots.txt — это стандартный файл для связи со сканерами-роботами, такими как Googlebot, которые не должны сканировать страницы. Вы размещаете его на своем сайте по корневому URL /robots.txt, например https://example.com/robots.txt.

Чтобы добавить такой файл в приложение Django, у вас есть несколько вариантов.

Использование предварительной загрузки связанных данных в Django: select_related и prefetch_related.

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

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

Микросервисы в последние дни были самой горячей темой в технологии, а за микросервисной архитектурой следуют такие технологические гиганты, как Netflix, Twitter, Amazon, Walmart и т.д., а также несколько стартапов. Они идеально подходят для современного гибкого процесса разработки программного обеспечения, где происходят постоянные инновации, а продукты постоянно поставляются. Давайте разберем еще несколько деталей о микросервисах.

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

Сегодня выпущен релиз исправления ошибок Django 3.0.2.

Пакет релиза и контрольные суммы доступны на странице загрузок, а также из индекса пакетов Python. Идентификатор ключа PGP, использованный в этом выпуске: Mariusz Felisiak: 2EF56372BA48CD1B.

Документация по Django рекомендует всегда начинать ваш проект с пользовательской модели User (даже если она идентична Django с самого начала), чтобы упростить настройку позже, если вам нужно. Но что делать, если вы не видели этого при запуске проекта, или если вы унаследовали проект без пользовательской модели User, и вам нужно добавить ее?

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

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

WebSockets — это технология, которая позволяет открывать сеанс интерактивной связи между браузером пользователя и сервером. С помощью этой технологии пользователь может отправлять сообщения на сервер и получать управляемые событиями ответы, не требуя длительного опроса, то есть без необходимости постоянно проверять сервер на предмет ответа. Подумайте, когда вы отвечаете на электронное письмо в Gmail, и в нижней части экрана вы видите всплывающее предупреждение «1 непрочитанное сообщение от […]» от человека, на которого вы только что отвечали. Такая обратная связь в режиме реального времени обусловлена такими технологиями, как WebSockets!

Сегодня часто можно увидеть веб-приложения, которые состоят из внешнего интерфейса (обычно написанного на Javascript) и внутреннего приложения, написанного на каком-либо серверном языке (Java, Python, Javascript, Ruby и т.д.). Часто клиентское приложение запрашивает данные у этого серверного приложения с помощью вызовов RESTful. Это стало настолько распространенным явлением, что многие фреймворки внедрили библиотеки, которые делают настройку такого типа серверных приложений менее болезненной, чем установка с нуля.

За последние пару месяцев я в свободное время создавал веб-приложение. Хотя я хотел бы держать детали моего приложения в секрете (пока), мне хотелось бы поделиться некоторыми трудностями, с которыми я столкнулся, работая над этим приложением; особенно когда дело доходит до управления пользователями и аутентификации с помощью веб-токенов JSON (JWT).

Команда Django рада объявить о выпуске Django 3.0: движение к тому, чтобы сделать Django полностью асинхронным, предоставляя поддержку для работы в качестве приложения ASGI, теперь официально поддерживает MariaDB 10.1 и выше, а также много других новых функций и возможностей.

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

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

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

Кандидат 1 релиза Django 3.0 — это последняя возможность для вас испытать множество новых функций перед выпуском Django 3.0.

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

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

Сегодня команда разработчиков Django выпустила версии 2.2.7, 2.1.14 и 1.11.26 с исправлениями ошибок.

Пакет и контрольные суммы доступны на странице загрузок, а также из индекса пакетов Python. Идентификатор ключа PGP, использованный в этом выпуске: Mariusz Felisiak: 2EF56372BA48CD1B.

Объект запроса Django request имеет изящный небольшой метод is_ajax(). Он позволяет определить, поступил ли запрос от JS-фреймворка (он же ajax старой школы). Хотя он отлично работает с некоторыми библиотеками JS, включая почтенный jQuery, он не будет работать с современным встроенным в JS fetch().

Лекции о Python 3 от Тимофея Хирьянова при поддержке Московского физико-технического института.

Лекция №5.

Лекции о Python 3 от Тимофея Хирьянова при поддержке Московского физико-технического института.

Лекция №4.

Лекции о Python 3 от Тимофея Хирьянова при поддержке Московского физико-технического института.

Лекция №3.

Лекции о Python 3 от Тимофея Хирьянова при поддержке Московского физико-технического института.

Лекция №2.

Лекции о Python 3 от Тимофея Хирьянова при поддержке Московского физико-технического института.

Лекция №1.

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

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

Стала доступна для тестирования Django 3.0 beta 1. Она представляет собой второй этап цикла выпуска 3.0 и дает вам возможность попробовать изменения, появившиеся в Django 3.0.

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

Сегодня команда разработчиков Django выпустила версии с исправлениями 2.2.6, 2.1.13 и 1.11.25.

Пакеты и контрольные суммы доступны на странице загрузок, а также из репозитория пакетов Python. Идентификатор ключа PGP, используемый для этого выпуска — Carlton Gibson: E17DF5C82B4F9D00.

В этом уроке мы собираемся изучить некоторые функции Django Crispy Forms для обработки расширенных/пользовательских форм с использованием Bootstrap 4.

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

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

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

В этом уроке мы закончим работу над страницей новостей на сайте. Мы создадим шаблон, который будет получать данные из Python и выводить их через цикл в HTML-шаблоне.

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

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

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

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

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

Для работы с Django необходимо установить Python, а также саму библиотеку Django. В этом уроке мы скачаем и установим все необходимое для комфортной работы с библиотекой в дальнейшем.

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

Понадобилось тут найти несоответствие суммы платежа Payment с суммой связанных ним элементов PaymentItem.

Решается это простой аннотацией.

Самый нескучный урок по Python Django новой версии на русском языке!

Выучи за 1 час и уже пили свои первые сайты.

Стала доступна версия Django 3.0 alpha 1. Она представляет собой первый этап цикла выпуска 3.0 и дает вам возможность опробовать изменения, появившиеся в Django 3.0.

Сегодня команда разработчиков Django выпустила версии с исправлениями 2.2.5, 2.1.12 и 1.11.24.

Пакет релиза и контрольные суммы доступны на странице загрузок, а также из индекса пакетов Python. Идентификатор ключа PGP, использованный в этом выпуске: Mariusz Felisiak: 2EF56372BA48CD1B.

Предположим, что у вас так много страниц (тысячи), что вы не можете просто создать один файл /sitemap.xml, в котором перечислены все URL-адреса (он же <loc>). Поэтому вам нужно создать /sitemaps.xml, который указывает на другие файлы карты сайта. А если адресов в каждом тысячи, то нужно сжать эти файлы.

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

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

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

Сегодня выпустили версию 2.2.1 с исправлениями ошибок.

Команда Django рада объявить о выпуске Django 2.2.

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

Выпущена новая версия Django 2.1.8, в которой исправлена ошибка в админке, допущенная в версии 2.1.7: запрещено редактировать inline-элементы для ManyToManyField, если у пользователя есть только разрешение на просмотр.

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

Выпущен релиз-кандидат 1 версии Django 2.2, в котором вы можете предварительно протестировать некоторые новые возможности перед выпуском Django 2.2.

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

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

Видео, рассказывающее о том, как верстать страницы используя Bootstrap для сайта, написанного на Django.

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

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

Сегодня был осуществлен новый выпуск исправлений Django 2.0.13.

Исправлен сбой в django.utils.numberformat.format_number(), когда число имеет более 200 цифр (#30177).

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

Как массово обновлять записи в Django с помощью аннотаций и подзапросов.

Существует два основных способа организации структуры шаблонов Django: на уровне приложений и пользовательский, на уровне проекта, который указывается в setting.py.

Сегодня команда разработчиков Django выпустила версии 2.1.4 и 1.11.17 с исправлениями ошибок. Пакеты и контрольные суммы доступны на странице загрузок, также как в Python Package Index. PGP key ID этого релиза от Carlton Gibson: E17DF5C82B4F9D00.

Интересует тема, как вызывать функции API Angular 6 и HttpClient? В этом учебном пособии будут показаны некоторые методы построения приложения для микро-блогов, использующего Angular 6 и Django Rest Framework (DRF). В процессе мы узнаем следующее: как сделать бэкэнд приложение с помощью Django и API Django Rest Framework, создание простого одностраничного приложения Angular 6, которое может запрашивать API, аутентификация пользователей с помощью JSON Web Tokens (JWT). Готовы? Давайте начнем!

Все что нужно знать о создании с нуля проекта Django и его окружения. Доклад с Moscow Python Meetup №54

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

Во время разработки моего последнего проекта django мне приходилось обеспечивать аутентификацию пользователей с помощью учетных записей Google. Для этого я использовал библиотеку social-app-django, которая реализует механизм аутентификации/регистрации, который поддерживает несколько провайдеров аутентификации и протоколов, таких как OAuth (версии 1 и 2) или OpenId.

Выпущена новая версия Django 2.1.3 с исправлениями регрессий и ошибок.

Интересует тема, как вызывать функции API Angular 6 и HttpClient? В этом учебном пособии будут показаны некоторые методы построения приложения для микро-блогов, использующего Angular 6 и Django Rest Framework (DRF).

Лучшие видеоруководства и скринкасты про Django за 2018 год.

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

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

Django распространяется с различными утилитами (командами), выполняемыми в командной строке, которые вызываются с помощью скрипта django-admin.py или manage.py (Custom Django Management Commands). Хорошая вещь в том, что вы также можете добавить свои собственные команды. Они могут хорошо помочь, когда необходимо взаимодействовать с приложением из командной строки терминала, а также их можно использовать в cron — утилите, использующейся для периодического выполнения заданий в определённое время.

Краткое руководство как начать использовать django-crispy-forms. Crispy-forms — это замечательное приложение, которое дает контроль над отображением форм Django не ломаю их обычную работу.

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

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

Что такое Django Rest Framework? Это библиотека, которая работает со стандартными моделями Django для создания гибкого и мощного API для проекта. Эта статья поможет понять структуру DRF и дать вводные данные для начала его использования в проекте.

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

Как получить имя модели или объекта в шаблонах Django.

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

Очень простая и быстрая настройка почты в Django.

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

Скачать Django | Джанго

Django доступен с открытым исходным кодом под
Лицензия BSD.
Мы рекомендуем использовать последнюю версию Python 3. Последняя версия для
поддержка Python 2.7 — это Django 1.11 LTS. Видеть
FAQ по версиям Python, поддерживаемым каждой версией Django.
Вот как это получить:

Вариант 1. Получите последнюю официальную версию

Последняя официальная версия — 3.1. Прочтите
Примечания к выпуску 3.1, затем установите его с помощью
пункт:

  pip install Django == 3.1  

Вариант 2. Получите последнюю версию для разработчиков

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

git clone https://github.com/django/django.git

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

После получения

Дополнительные инструкции см. В руководстве по установке. Убедитесь, что вы прочитали документацию, соответствующую только что установленной версии Django.

И не забудьте подписаться на список рассылки django-users, где другие пользователи Django и сами разработчики Django тусуются, чтобы помочь друг другу.

Поддерживаемые версии

Выпуски функций (A.B, A.B + 1 и т. Д.) Будут происходить примерно каждые восемь месяцев.
Эти выпуски будут содержать новые функции, улучшения существующих функций и т. Д.

Патч-релизы (A.B.C и т. Д.) Будут выпущены по мере необходимости для
исправить ошибки и / или проблемы с безопасностью. Эти выпуски будут на 100% совместимы с
связанный выпуск функции, если это невозможно по соображениям безопасности
причин или для предотвращения потери данных. Итак, ответ на вопрос «стоит ли мне перейти на
последний выпуск патча? » всегда будет «да».«

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

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


Выпуск серии Последняя версия Окончание основной поддержки 1 Окончание расширенной поддержки 2
3.1 3,1 Апрель 2021 г. Декабрь 2021 г.
3,0 3.0.9 Август, 2020 Апрель 2021 г.
2,2 ЛТС 2.2.15 2 декабря 2019 г. Апрель 2022 г.
2,1 2.1.15 1 апреля 2019 г. 2 декабря 2019 г.
2.0 2.0.13 1 августа 2018 г. 1 апреля 2019 г.
1,11 ЛТС 3 1.11.29 2 декабря 2017 г. 1 апреля 2020 г.
1,10 1.10.8 4 апреля 2017 г. 2 декабря 2017 г.
1,9 1.9.13 1 августа 2016 г. 4 апреля 2017 г.
1.8 ЛТС 1.8.19 1 декабря 2015 г. 1 апреля 2018 г.
1,7 1.7.11 1 апреля 2015 г. 1 декабря 2015 г.
1,6 1.6.11 2 сентября 2014 г. 1 апреля 2015 г.
1,5 1.5.12 6 ноября 2013 г. 2 сентября 2014 г.
1.4 LTS 1.4.22 26 февраля 2013 г. 1 октября 2015 г.
1,3 1,3,7 23 марта 2012 г. 26 февраля 2013 г.

Вот как выглядит будущая дорожная карта:

Выпуск серии Дата выпуска Окончание основной поддержки 1 Окончание расширенной поддержки 2
3.2 LTS Апрель 2021 г. Декабрь 2021 г. Апрель 2024 г.
4,0 Декабрь 2021 г. Август 2022 г. Апрель 2023 г.
4,1 Август 2022 г. Апрель 2023 г. Декабрь 2023 г.
4,2 ЛТС Апрель 2023 г. Декабрь 2023 г. Апрель 2026 г.

[1] Исправления безопасности, ошибки потери данных, ошибки сбоя, основные функции
ошибки во вновь представленных функциях и регрессии из старых версий Django.

[2] Исправления безопасности и ошибки потери данных.
[3] Последняя версия для поддержки Python 2.7.

Вернуться к началу
,

Перенос на Python 3 | Документация Django

Django 1.5 — первая версия Django, поддерживающая Python 3. Тот же код
работает как на Python 2 (≥ 2.6.5), так и на Python 3 (≥ 3.2), благодаря шести
слой совместимости.

Этот документ в первую очередь предназначен для авторов подключаемых приложений.
кто хочет поддерживать Python 2 и 3. В нем также описаны рекомендации,
применить к коду Django.

Философия¶

Этот документ предполагает, что вы знакомы с изменениями между Python 2
и Python 3.Если вы этого не сделаете, сначала прочтите официальное руководство по портированию Python. Обновление ваших знаний об обработке Unicode на
Python 2 и 3 помогут; презентация Pragmatic Unicode — хорошая
ресурс.

Django использует стратегию Python 2/3 Compatible Source . Конечно ты
вы можете выбрать другую стратегию для вашего собственного кода, особенно если вам не нужно
чтобы оставаться совместимым с Python 2. Но авторы подключаемых приложений
рекомендуется использовать ту же стратегию переноса, что и сам Django.

Написать совместимый код будет намного проще, если вы ориентируетесь на Python ≥ 2.6. Django 1.5
вводит инструменты совместимости, такие как django.utils.six , который является
кастомизированная версия шести модулей . Для удобства,
Вперед-совместимые псевдонимы были представлены в Django 1.4.2. Если ваш
приложение использует эти инструменты, для этого потребуется Django ≥ 1.4.2.

Очевидно, что написание совместимого исходного кода добавляет некоторые накладные расходы, и это может
вызвать разочарование. Разработчики Django обнаружили, что при попытке написать
Код Python 3, совместимый с Python 2, приносит гораздо больше пользы, чем
напротив.Это не только делает ваш код более перспективным, но и Python 3
преимущества (например, более разумное обращение со струнами) начинают проявляться быстро. Работа
с Python 2 становится требованием обратной совместимости, и мы, как
разработчики привыкли иметь дело с такими ограничениями.

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

Советы по переносу ¶

литералов Unicode¶

Этот шаг состоит из:

  • Добавление из __future__ import unicode_literals в верхней части вашего Python
    модулей — лучше всего помещать их в каждый модуль, иначе вы
    продолжайте проверять верхнюю часть ваших файлов, чтобы узнать, какой режим действует;
  • Удаление префикса и перед строками Unicode;
  • Добавление префикса b перед строками байтов.

Систематическое внесение этих изменений гарантирует обратную совместимость.

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

Примечание

Префикс

Python 2 u является синтаксической ошибкой в ​​Python 3.2, но он будет
снова разрешен в Python 3.3 благодаря PEP 414 . Таким образом, это
преобразование не является обязательным, если вы ориентируетесь на Python ≥ 3.3. Это все еще
рекомендуется в соответствии с философией «писать код Python 3».

Обработка строк¶

Тип Unicode

Python 2 был переименован в str в Python 3,
str () было переименовано в байтов в , а базовая строка исчезла.шесть предоставляет инструменты для решения этих
меняется.

Django также содержит несколько связанных со строками классов и функций в
django.utils.encoding и django.utils.safestring модулей. Их
имена использовали слова str , что не означает то же самое в Python 2
и Python 3, и unicode , которого нет в Python 3. Чтобы
во избежание двусмысленности и путаницы эти понятия были переименованы в байт и
текст .

Вот изменения имени в django.utils.encoding :

Старое название Новое название
smart_str smart_bytes
smart_unicode smart_text
force_unicode force_text

Для обратной совместимости старые имена все еще работают на Python 2.Под
Python 3, smart_str — это псевдоним для smart_text .

Для прямой совместимости новые имена работают с Django 1.4.2.

Примечание

Кодировка django.utils. была глубоко переработана в Django 1.5 на
предоставить более последовательный API. Проверьте его документацию для получения дополнительной информации
Информация.

django.utils.safestring в основном используется через
mark_safe () и
mark_for_escaping () функций, которые не
изменение.Если вы используете внутреннее устройство, вот изменения названия:

Старое название Новое название
EscapeString EscapeBytes
EscapeUnicode EscapeText
SafeString SafeBytes

.

Отправить ответ

avatar
  Подписаться  
Уведомление о