Django — Django Графики


Содержание

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

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

Почему Django?

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

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

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

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

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

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

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

Плюсы Django

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

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

PHP против Python

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 — лучший фреймворк для разработки сайтов

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

Прошлое и будущее фреймворка Django: краткий экскурс в историю

Django создали разработчики издания Lawrence-Journal World. Этой газете понадобился сайт, чтобы публиковать новости в интернете. Программисты Эдриан Головатый и Саймон Виллисон создали веб-приложение и сделали его публичным.

Вокруг Django быстро сформировалось активное сообщество. Фреймворк стал стремительно развиваться усилиями волонтёров. Значительную роль в успехе Django сыграли несколько известных сайтов, которые использовали этот фреймворк. В их число входят Pinterest, Dropbox, Spotify, сайт The Washington Post. В настоящее время сообщество Django включает более 11 тыс. разработчиков из 166 стран мира.

Эти сайты используют Django

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

В Django реализован принцип DRY (don’t repeat yourself). Благодаря этому сокращается время создания сайтов. То есть при использовании Django вам не нужно несколько раз переписывать один и тот же код. Фреймворк позволяет создавать сайт из компонентов. Это можно сравнить со строительством крепости с помощью Lego.

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

Почему MVT архитектура важна для веб-приложений на Django: разделение и независимое использование уровней

Фреймворк Django написан на языке программирования Python, поэтому его структура соответствует особенностям языка. Создатели реализовали в Django паттерн MVC, и он применяется в текущей версии фреймворка.

Архитектура MVC позволяет разработчику работать с визуальным представлением и бизнес-логикой приложения отдельно. Кстати, при работе с Django специалисты чаще используют термин MVT — Model-View-Template или модель-представление-шаблон. Компоненты MVT можно использовать независимо друг от друга.

Схема архитектуры MVT в Django

Документация Django определяет модель (model) как «источник информации о данных, в которых содержатся ключевые поля и поведение данных». Обычно одна модель указывает на одну таблицу в базе данных. Django поддерживает базы данных PostgreSQL, MySQL, SQLite и Oracle.

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

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

Представление (view) решает три задачи: принимает HTTP-запросы, реализует бизнес-логику, определённую методами и свойствами, отправляет HTTP-ответ в ответ на запросы. То есть представление получает данные от модели и предоставляет шаблонам (templates) доступ к этим данным или предварительно обрабатывает данные и затем предоставляет к ним доступ шаблонам.

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

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

Какие задачи можно решать с помощью Django: движки для сайтов, CRM, machine learning

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

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

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

  • CRM-систем.
  • CMS.
  • Коммуникационных платформ.
  • Сервисов бронирования номеров.
  • Платформ управления документооборотом.

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

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

Почему Django — отличный фреймворк для веб-разработки: экосистема, SEO, библиотеки

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

Развитая экосистема

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

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

Зрелость

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

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

Административная панель

Административная панель Django автоматически генерируется при создании приложения. Это избавляет разработчика от необходимости создавать админку вручную.


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

SEO-дружественность

Написанный на Python код получается читабельным и понятным даже неподготовленным людям. Это один из факторов, благодаря которым веб-приложения на Python считаются SEO-дружественными. Django генерирует семантические URL. Их также называют человеко-понятными URL или ЧПУ. В приложениях на Django легко реализуются другие функции, необходимые для поисковой оптимизации.

Расширяемость

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

Библиотеки

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

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

  • Django REST Framework, который упрощает работу с API.
  • Django CMS — удобный инструмент для управления контентом.
  • Django-allauth — с его помощью реализуются функции регистрации, авторизации, управления учётными записями.

В Django реализовано объектно-реляционное отображение (ORM), которое обеспечивает взаимодействие приложения с базами данных (БД). ORM автоматически передаёт данные из БД, например, PostgreeSQL или MySQL, в объекты, которые используются в коде приложения.

Схема работы ORM

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

Также ORM позволяет быстро переключаться между базами данных с минимальными изменениями кода. Например, вы можете использовать SQLite на локальном сервере, а потом переключиться на MySQL на production-сервере. Однако для минимизации ошибок лучше использовать одну базу данных во время разработки и в продакшене.

Недостатки Django: не для маленьких проектов, не всегда предсказуемое поведение

У Django есть недостатки, как у любого инструмента. Основные недостатки фреймворка перечислены ниже.

Не подходит для небольших проектов

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

Нет поддержки WebSocket по умолчанию

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

Монолитность

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

Непредсказуемость поведения некоторых компонентов

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

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

Альтернативы Django

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

Также в качестве альтернативы можно рассматривать PHP-фреймворки, например, Laravel, Symphony или CakePHP. Например, Laravel подходит для работы с масштабными и маленькими проектами, и в этом фреймворке есть мощный движок шаблонов.

Если для вашего проекта критически важна безопасность, Laravel можно считать инструментом первого выбора. В нём реализованы мощные инструменты шифрования. Этот PHP-фреймворк работает с базами данных MySQL, PostgreSQL, SQL Server, SQ Lite.

Ещё одна достойная альтернатива — фреймворк Ruby on Rails. Этот инструмент ускоряет создание веб-приложений и позволяет разработчикам сфокусироваться скорее на бизнес-логике, чем на коде. Кстати, наш сайт создан на Ruby on Rails.

Смотрите также: стрим с Кириллом Мокевниным «Создание сайта на Rails с нуля».

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

Заключение: почему стоит выбрать Django

Разработчики выбирают Django благодаря таким характеристикам:

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

Если хотите поделиться опытом работы с Django, пишите в комментариях.

Адаптированный перевод статьи Why Django is the best web framework for your project by Ekaterina Zublenko and Angela Beklemysheva. Мнение авторов может не совпадать с мнением администрации «Хекслета».

Создание первого приложения на Django, часть 1¶

Давайте учиться на примере.

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

Он будет состоять из двух частей:

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

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

Цукерберг рекомендует:  Бесплатка хэллоуин-иконки

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

Это руководство написано для Django | version | и требует как минимум версию Python 3.5. Если версия Django не совпадает, вы можете обратиться к учебнику для вашей версии Django или обновить Django до последней версии. Если вы используете более старую версию Python, прочитайте Какие версии Python можно использовать с Django? , чтобы найти совместимую версию Django.

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

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

Если у вас возникли трудности с этим руководством, можно написать сообщение в django-users или зайти в чат #django on irc.freenode.net, где другие пользователи Django могут вам помочь.

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

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

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

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

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

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

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

Размещайте свой код в каком-либо каталоге вне корневого каталога сервера, например /home/mycode .

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

Разберем, для чего нужны эти файлы и каталоги:

  • Внешний каталог mysite/ — просто контейнер вашего проекта. Это имя ничего не значит для Django, поэтому его переименовать как угодно.
  • manage.py : утилита, позволяющая взаимодействовать с проектом различными способами. Вы можете прочитать все подробности о manage.py в django-admin and manage.py .
  • Внутренний каталог mysite/ это Python модуль вашего проекта. Его название вы будете использовать для импорта чего-либо из этого модуля (например, mysite.urls ).
  • mysite/__init__.py : пустой файл, который сообщает Python, что этот каталог должен рассматриваться как пакет Python’а. Если вы новичок в Python, прочитайте больше о пакетах в официальной документации Python.
  • mysite/settings.py : Конфигурация и настройки проекта Django. В Django settings рассказано все о том, как работают настройки.
  • mysite/urls.py : указание URL проекта на Django, можно сказать, что это «оглавление» вашего проекта. Прочитайте больше информации о URL в URL dispatcher .
  • mysite/wsgi.py : Точка входа для WSGI совместимых веб-серверов для работы с проектом. Смотрите How to deploy with WSGI для уточнения деталей работы.


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

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

Твой первый проект на Django!

Отдельные части этой главы основаны на учебном пособии django-marcador , лицензированном под Creative Commons Attribution-ShareAlike 4.0 International License. Руководство django-marcador защищено авторским правом Markus Zapke-Gründemann et al.

Мы собираемся создать простой блог!

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

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

Не забудь: ты должна запускать все команды в virtualenv. Если ты не видишь в командной строке префикса (myvenv) , то необходимо активировать virtualenv. Мы объясняли, как это сделать, в разделе Работаем с virtualenv главы Установка Django. Для этого нужно набрать myvenv\Scripts\activate в Windows или source myvenv/bin/activate в Mac OS / Linux.

В консоли Mac OS или Linux нужно запустить следующую команду (не забудь добавить точку . в конце):

Точка . крайне важна, потому что говорит скрипту установить Django в вашем текущем каталоге (который и обозначается сокращённо точкой . )

Примечание: при вводе приведённой командs помни, что тебе нужно набирать только часть, начинающуюся с django-admin . (myvenv)

/djangogirls$ — это просто пример строки-приглашения терминала.

В Windows запусти следующую команду (не забудь добавить точку . в конце):

Точка . крайне важна, потому что говорит скрипту установить Django в вашем текущем каталоге (который и обозначается сокращённо точкой . )

Примечание: при вводе приведённой команды помни, что тебе нужно набирать только часть, начинающуюся с django-admin.exe . (myvenv) C:\Users\Name\djangogirls> — это просто пример приглашения командной строки.

django-admin.py — это скрипт, который создаст необходимую структуру директорий и файлы для нас. Теперь у твоего проекта должна быть следующая структура:

Примечание: в своей структуре директорий ты также увидишь ранее созданную нами директорию с виртуальным окружением.

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

Файл settings.py содержит настройки для твоего веб-сайта.

Помнишь нашу аналогию с почтальоном? Файл urls.py содержит список шаблонов, по которым ориентируется urlresolver .

Давай пока забудем про остальные файлы — мы не будем их изменять. Только не удали их случайно!

Изменяем настройки

Давай внесём изменения в mysite/settings.py . Открой файл в текстовом редакторе, который ты выбрала ранее.

Примечание: помни, что settings.py — самый обычный файл. Ты можешь открыть его из своего редактора кода, используя меню «Файл -> Открыть». При этом ты увидишь обычное окно, в которой ты можешь перейти к своему файлу settings.py и выбрать его. Либо ты можешь открыть этот файл, перейдя в директорию проекта djangogirls на твоём рабочем столе и щёлкнув по нему правой кнопкой мыши; затем выбери свой редактор кода из предложенного списка. Важно выбрать именно редактор, поскольку у тебя могут быть установлены программы, которые откроют наш файл, но не позволят его изменить.

Было бы неплохо установить корректный часовой пояс на нашем сайте. Перейди к списку часовых поясов википедии и скопируй название своего часового пояса (TZ) (например, Europe/Moscow ).

В файле settings.py найди строку, содержащую TIME_ZONE , и измени её в соответствии со своим часовым поясом:

Код языка состоит из сокращённого названия языка, например en для английского или ru для русского, и кода страны, например, ru для России или ch для Швейцарии. Тебе понадобится эта настройка, если ты хочешь, чтобы все встроенные кнопки и уведомления от Django были на твоём языке. Таким образом, надпись на кнопке «Cancel» будет переведена на заданный тобой язык. Django поставляется с большим набором готовых переводов.

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

Нам также необходимо добавить в настройки информацию о расположении статических файлов (мы познакомимся со статическими файлами и CSS в следующих главах). Спустись в конец файла и после переменной STATIC_URL добавь новую — STATIC_ROOT :

Когда наcтройка DEBUG имеет значение True , а настройка ALLOWED_HOSTS пуста, имя хост твоего веб-сайта сверяется со списком [‘localhost’, ‘127.0.0.1’, ‘[::1]’] . Ни одно из значений не соответствует имени хоста на PythonAnywhere при публикации нашего приложения, поэтому нам необходимо изменить следующую настройку:

Примечание: В случае если вы используете Chromebook, добавьте следующую строку в конец файла settings.py: MESSAGE_STORAGE = ‘django.contrib.messages.storage.session.SessionStorage’

Настройка базы данных

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

Она уже выбрана по умолчанию в файле mysite/settings.py :

Чтобы создать базу данных для нашего блога, набери в командной строке следующее: python manage.py migrate (мы должны быть в директории djangogirls , где расположен файл manage.py ). Если всё прошло успешно, то ты увидишь следующий результат:

Вот и всё! Пришло время запустить веб-сервер и посмотреть, работает ли наш веб-сайт!

Запуск веб-сервера

Ты должна быть в директории, где расположен файл manage.py (в нашем случае — djangogirls ). Запустим веб-сервер из командной строки: python manage.py runserver :

Если ты работаешь в Windows, и команда падает с ошибкой UnicodeDecodeError , используй вместо неё другую:

Теперь тебе нужно проверить, работает ли веб-сайт — открой браузер (Firefox, Chrome, Safari, Internet Explorer или любой другой) и набери следующий адрес:

Если ты используешь Chromebook или Cloud9, вместо этого нажми на ссылку во всплывающем окне, которая должна появиться в правом верхнем углу командного окна, в котором запущен веб сервер. Ссылка может выглядеть так:

Поздравляем! Ты только что создала свой первый веб-сайт и запустила его на веб-сервере! Ну не круто ли?

Пока работает веб-сервер, в терминале не будет приглашения для ввода команд. Ты всё ещё сможешь ввести текст, но не сможешь выполнить никакую другую команду. Это происходит потому, что сервер продолжает работу, «слушая» входящие запросы.

Мы рассматривали, как работают веб-сервера, в главе Как работает интернет.

Веб-сервер займёт командную строку, пока ты его не остановишь. Чтобы и дальше иметь возможность набирать команды, открой ещё одно окно терминала и активируй в нём виртуальное окружение. Чтобы остановить веб-сервер, перейди обратно в окно, в котором он работает, и нажми CTRL + C — кнопки Control и C вместе (в Windows может потребоваться нажать клавиши Ctrl + Break).

Готова к следующему шагу? Пришло время создать содержимое для нашего блога!

Django

Django makes it easier to build better Web apps more quickly and with less code.

Meet Django

Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design. Built by experienced developers, it takes care of much of the hassle of Web development, so you can focus on writing your app without needing to reinvent the wheel. It’s free and open source.

Django was designed to help developers take applications from concept to completion as quickly as possible.

Django takes security seriously and helps developers avoid many common security mistakes.

Some of the busiest sites on the Web leverage Django’s ability to quickly and flexibly scale.

Stay in the loop

Subscribe to one of our mailing lists to stay up to date with everything in the Django community:

Using Django

Get help with Django and follow announcements.

You can also subscribe by sending an email to django-users+subscribe@googlegroups.com and following the instructions that will be sent to you.

Contributing to Django

Contribute to the development of Django itself.


Before asking a question about how to contribute, read Contributing to Django. Many frequently asked questions are answered there.

You can also subscribe by sending an email to django-developers+subscribe@googlegroups.com and following the instructions that will be sent to you.

We have a few other specialized lists (mentorship, i18n, . ). You can find more information about them in our mailing list documentation.

Support Django!

Latest news

Django bugfix releases issued: 2.2.7, 2.1.14, and 1.11.26

Today the Django project issued bugfix releases for the 2.2, 2.1, and 1.11 release series.

Posted by Mariusz Felisiak on Ноябрь 4, 2020

2020 DSF Board Nominations

It is that time of year again to think about next year’s Django Software Foundation’s Board of Directors! There has been some confusion on this in the past, but anyone including current Board members, DSF Members, or the public at large can apply to the Board. It is open to all. Please consider joining us for 2020!

Posted by Frank Wiles on Октябрь 24, 2020

More news

Django учебник Часть 3: Использование моделей

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

Предпосылки Django Tutorial Part 2: Creating a skeleton website.
Задача: Научиться проектировать и создавать свои собственные модели, выбирая подходящие поля.

Обзор

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

В этом учебнике показано, как определить и получить доступ к моделям на примере LocalLibrary website.

Проектирование моделей LocalLibrary

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

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

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

Вы также можете использовать модели для представления параметров списка выбора (например, как выпадающий список вариантов), вместо жёсткого кодирования выбора на самом веб-сайте — это рекомендуется, когда все варианты неизвестны заранее или могут измениться. Очевидные кандидаты на модели в этом случае включают жанр книги (например, «Научная фантастика», «Французская поэзия» и т. д.) И язык (английский, французский, японский).

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

Диаграмма ассоциации UML, приведённая ниже показывает модели, которые мы определили в этом случае (в виде блоков). Как и выше, мы создали модели для книги (общие сведения о книге), экземпляр книги (статус конкретных физических копий книги, доступных в системе) и автора.Мы также решили создать модель для жанра, чтобы можно было создавать / выбирать значения через интерфейс администратора. Мы решили не иметь модель для BookInstance: status — мы жестко закодировали значения (LOAN_STATUS), потому что мы не ожидаем их изменения. В каждом из полей вы можете увидеть имя модели, имена и типы полей, а также методы и их типы возврата.

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

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

Модель для начинающих

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

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

Модели обычно определяются в приложении models.py. Они реализуются как подклассы django.db.models.Model , и могут включать поля, методы и метаданные. В приведенном ниже фрагменте кода показана «типичная» модель, названная MyModelName :

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

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

Наш вышеприведенный пример имеет одно поле, называемое my_ field_name , типа models.CharField — что означает, что это поле будет содержать строки буквенно-цифровых символов. Типы полей назначаются с использованием определенных классов, которые определяют тип записи, которая используется для хранения данных в базе данных, а также критерии проверки, которые должны использоваться, когда значения получены из формы HTML (то есть, что составляет действительное значение). Типы полей также могут принимать аргументы, которые дополнительно определяют, как поле хранится или может использоваться. В этом случае мы даем нашему полю два аргумента:

  • max_length=20 — Указывает, что максимальная длина значения в этом поле составляет 20 символов.
  • help_text=»Enter field documentation» — предоставляет текстовую метку для отображения, чтобы помочь пользователям узнать, какое значение необходимо предоставить, когда это значение должно быть введено пользователем через HTML-форму.

Имя поля используется для обращения к нему в запросах и шаблонах. В полях также есть метка, которая задается как аргумент (verbose_name), либо выводится путем заглавной буквы первой буквы имени переменной поля и замены любых символов подчеркивания пробелом (например, my_field_name будет иметь метку по умолчанию My field name).

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

Общие аргументы поля

Следующие общие аргументы могут использоваться при объявлении многих / разных типов полей:

  • help_text: Предоставляет текстовую метку для HTML-форм (например, на сайте администратора), как описано выше.
  • verbose_name: Удобо-читаемое имя для поля, используемого в поле метки. Если не указано, Django выведет по умолчанию подробное название от имени поля.
  • default: Значение по умолчанию для поля. Это может быть значение или вызываемый объект, и в этом случае объект будет вызываться каждый раз, когда создается новая запись.
  • null: Если True, Django будет хранить пустые значения как NULL в базе данных для полей, где это уместно (CharField вместо этого сохранит пустую строку). По умолчанию используется значение False.
  • blank: Если True, поле может быть пустым в ваших формах. По умолчанию используется значение False, что означает, что проверка формы Django заставит вас ввести значение. Это часто используется с null = True, потому что если вы хотите разрешить пустые значения, вы также хотите, чтобы база данных могла представлять их соответствующим образом.
  • choices: Группа вариантов для этого поля. Если это предусмотрено, по умолчанию соответствующий виджет формы будет полем выбора с этими вариантами вместо стандартного текстового поля.
  • primary_key: Если True, задает текущее поле в качестве первичного ключа для модели (первичный ключ — это специальный столбец базы данных, предназначенный для однозначной идентификации всех разных записей таблицы). Если в качестве первичного ключа не указано поле, Django автоматически добавит для этой цели поле.
Цукерберг рекомендует:  Вакансии Selectel

Есть много других вариантов — вы можете просмотреть full list of field options here.

Общие типы полей

Следующие общие аргументы могут использоваться при объявлении многих / разных типов полей:

  • CharField Используется для определения строк фиксированной длины от короткой до средней. Вы должны указать max_length для хранения данных.
  • TextField используется для больших строк произвольной длины. Вы можете указать max_length для поля, но это используется только тогда, когда поле отображается в формах (оно не применяется на уровне базы данных).
  • IntegerField это поле для хранения значений (целого числа) и для проверки введенных значений в виде целых чисел в формах.
  • DateField и DateTimeField используются для хранения / представления дат и информации о дате / времени (как Python datetime.date и datetime.datetime, соответственно). Эти поля могут дополнительно объявлять (взаимоисключающие) параметры auto_now=True (для установки поля на текущую дату каждый раз, когда модель сохраняется), auto_now_add (только для установки даты, когда модель была впервые создана) и по умолчанию (чтобы установить дату по умолчанию, которую пользователь может переустановить).
  • EmailField используется для хранения и проверки адресов электронной почты.
  • FileField и ImageField используются для загрузки файлов и изображений соответственно ( ImageField просто добавляет дополнительную проверку, что загруженный файл является изображением). Они имеют параметры для определения того, как и где хранятся загруженные файлы.
  • AutoField — это особый тип IntegerField, который автоматически увеличивается. Первичный ключ этого типа автоматически добавляется в вашу модель, если вы явно не укажете его.
  • ForeignKey Используется для указания отношения «один ко многим» к другой модели базы данных (например, автомобиль имеет одного производителя, но производитель может делать много автомобилей). «Одна» сторона отношения — это модель, содержащая ключ.
  • ManyToManyField используется для определения отношения «многие ко многим» (например, книга может иметь несколько жанров, и каждый жанр может содержать несколько книг). В нашем приложении для библиотек мы будем использовать их аналогично ForeignKeys, но их можно использовать более сложными способами для описания отношений между группами. Они имеют параметр on_delete, чтобы определить, что происходит, когда связанная запись удаляется (например, значение models.SET_NULL просто установило бы значение NULL)

Существует много других типов полей, включая поля для разных типов чисел (большие целые числа, малые целые числа, дробные), логические значения, URL-адреса, slugs, уникальные идентификаторы и другие «связанные с временем» сведения (продолжительность, время и т. д.). Вы можете просмотреть full list here.

Метаданные

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

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

Например, если мы решили сортировать книги по умолчанию:

Книги будут отсортированы по алфавиту по названию, от A-Z, а затем по дате публикации внутри каждого названия, от самого нового до самого старого.

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

Другие полезные атрибуты позволяют создавать и применять новые «разрешения доступа» для модели (разрешения по умолчанию применяются автоматически), разрешить упорядочение на основе другого поля или объявить, что класс является «абстрактным» (базовый класс, для которого вы не можете создавать записи, и вместо этого будет создан для создания других моделей). Многие другие параметры метаданных управляют тем, какая база данных должна использоваться для модели и как хранятся данные (это действительно полезно, если вам нужно сопоставить модель с существующей базой данных). Полный список опций метаданных доступен здесь: Model metadata options (Django документация).

Методы

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

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

Примечание. Предполагется, что вы будете использовать URL-адреса, например / myapplication / mymodelname / 2, для отображения отдельных записей для вашей модели (где «2» — это идентификатор для определенной записи), вам нужно будет создать URL-карту, чтобы передать ответ и идентификатор «Образцовое представление модели» (которое будет выполнять работу, необходимую для отображения записи). Вышеуказанная функция reverse () может «перевернуть» ваш URL-адрес (в приведенном выше примере с именем «model-detail-view»), чтобы создать URL-адрес правильного формата.

Конечно, для выполнения этой работы вам все равно придется писать сопоставление URL-адрес, просмотр и шаблон!


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

Управление моделью

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

Создание и изменение записей

Чтобы создать запись, вы можете определить экземпляр модели, а затем вызвать метод save ().

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

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

Поиск записей

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

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

Мы можем получить все записи для модели как объект QuerySet, используя objects.all() . QuerySet — это итерируемый объект, означающий, что он содержит несколько объектов, которые мы можем перебирать / прокручивать.

Метод filter () Django позволяет отфильтровать возвращаемый QuerySet для соответствия указанному текстовому или числовому полю по конкретным критериям. Например, чтобы отфильтровать книги, содержащие слово «wild» («дикие») в заголовке, а затем подсчитать их, мы могли бы сделать следующее.

Соответствующие поля и тип соответствия определяются в имени параметра фильтра, используя формат: field_name__match_type (обратите внимание на двойное подчеркивание между заголовком выше). Выше мы фильтруем заголовок с учетом регистра. Есть много других типов совпадений, которые вы можете сделать: icontains (без учета регистра), iexact (точное совпадение без учета регистра), exact (точное совпадение с учетом регистра ) и в, gt (больше), startswith и т. д смотреть полный список (Django Docs, [EN]).

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

Примечание: Вы можете использовать символы подчеркивания (__) для навигации по многим уровням отношений (ForeignKey / ManyToManyField) по своему усмотрению. Например, книга, имеющая разные типы, определяемая с использованием дополнительной связи «обложка», может иметь имя параметра: type__cover__name__exact = ‘hard’.

Существует гораздо больше возможностей для запросов, включая обратные поиски от связанных моделей, цепочки фильтров, возврат меньшего набора значений и т. д. Для получения дополнительной информации см. Making queries (Django Docs, [EN]).

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

В этом разделе мы начнем определять модели для библиотеки. Откройте models.py (в / locallibrary / catalog /). Шаблон в верхней части страницы импортирует модуль моделей, который содержит базовый класс модели models.Model, от которого наследуются наши модели.

Модель жанра

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

Модель имеет один CharField field (имя), которое используется для описания жанра (оно ограничено 200 символами и имеет некоторый help_text. В конце модели мы объявляем метод __str __ (), который просто возвращает имя жанра, определенного конкретной записью. Нет подробного имени, поэтому поле будет называться Name в формах.

Модель книги

Скопируйте модель книги ниже и снова вставьте ее в нижнюю часть файла. Модель книги представляет всю информацию о доступной книге в общем смысле, но не конкретный физический «экземпляр» или «копию» для временного использования. Модель использует CharField для представления названия книги и isbn (обратите внимание, как isbn указывает свой ярлык как «ISBN», используя первый неименованный параметр, поскольку в противном случае ярлык по умолчанию был бы «Isbn»). Модель использует TextField для summary, потому что этот текст, возможно, должен быть очень длинным.

Жанр представляет из себя ManyToManyField, так что книга может иметь несколько жанров, а жанр может иметь много книг. Автор объявляется через ForeignKey, поэтому в каждой книге будет только один автор, но у автора может быть много книг (на практике книга может иметь несколько авторов, но не в такой реализации!)

В обоих типах полей соответствующий класс модели объявляется как первый неименованный параметр, используя либо класс модели, либо строку, содержащую имя соответствующей модели. Вы должны использовать имя модели как строку, если связанный класс еще не был определен в этом файле до того, как он будет указан! Другими параметрами, представляющими интерес для поля автора, являются null=True , которое позволяет базе данных хранить значение Null , если автор не выбран, и on_delete = models. SET_NULL установит значение автора в Null, если связанная с автором запись будет удалена.

Модель также определяет __str __ (), используя поле заголовка книги для представления книги. Окончательный метод get_absolute_url () возвращает URL-адрес, который можно использовать для доступа к подробной записи для этой модели (для этого нам нужно будет определить сопоставление URL-адресов, в котором содержится подробная информация о книге, и определить связанное представление и шаблон ).

Модель BookInstance

Затем скопируйте модель BookInstance (показано ниже) под другие модели. BookInstance представляет собой определенную копию книги, которую кто-то может брать взаймы, и включает информацию о том, доступна ли копия или в какой день она ожидается, «отпечаток» или сведения о версии, а также уникальный идентификатор книги в библиотеке. Теперь некоторые из полей и методов будут знакомы. Модель использует

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

Мы дополнительно объявляем несколько новых типов полей:

  • UUIDField используется для поля id, чтобы установить его как primary_key для этой модели. Этот тип поля выделяет глобальное уникальное значение для каждого экземпляра (по одному для каждой книги, которую вы можете найти в библиотеке).
  • DateField используется для данных due_back (при которых ожидается, что книга появится после заимствования или обслуживания). Это значение может быть blank или null (необходимо, когда книга доступна). Метаданные модели (Class Meta) используют это поле для упорядочивания записей, когда они возвращаются в запросе.
  • status — это CharField, который определяет список choice/selection. Как вы можете видеть, мы определяем кортеж, содержащий кортежи пар ключ-значение и передаем его аргументу выбора. Значение в key/value паре — это отображаемое значение, которое пользователь может выбрать, а ключи — это значения, которые фактически сохраняются, если выбрана опция. Мы также установили значение по умолчанию «m» (техническое обслуживание), поскольку книги изначально будут созданы недоступными до того, как они будут храниться на полках.

Модель __str __ () представляет объект BookInstance, используя комбинацию его уникального идентификатора и связанного с ним заголовка книги.

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

    Значение, возвращаемое __str __ (), является форматированной строкой. В строке мы используем % S для объявления ‘placeholders’. После строки укажем %, а затем кортеж, содержащий значения, которые будут вставлены в заполнители. Если у вас просто один заполнитель, вы можете опустить кортеж — например, ‘Мое значение:% S’ % переменная.

Обратите также внимание на то, что, хотя этот подход совершенно применим, но он более не является предпочтительным. Начиная с Python 3, вы должны использовать метод format, например. ‘ <0>(<1>)’.format (self.id, self.book.title). Вы можете узнать больше об этом здесь.

Модель автора

Скопируйте модель автора (показано ниже) под существующим кодом в models.py.

Теперь все поля/методы должны быть знакомы. Модель определяет автора как имя, фамилию, дату рождения и (необязательную) дату смерти. Он указывает, что по умолчанию __str __ () возвращает имя в фамилии, порядковый номер первого имени. Метод get_absolute_url () отменяет сопоставление URL-адреса автора с целью получения URL-адреса для отображения отдельного автора.

Повторно выполнить миграцию базы данных

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

Языковая модель — вызов

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

Некоторые вещи, которые следует учитывать:

  • Должен ли «язык» ассоциироваться с Book, BookInstance или каким-либо другим объектом?
  • Должны ли быть представлены разные языки с использованием модели, свободного текстового поля или жестко запрограммированного списка выбора?

После того, как вы решили, добавьте поле. Вы можете увидеть наше решение на Github here.

Резюме

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

На этом этапе мы отвлечемся от создания сайта и проверим Django Administration site. Этот сайт позволит нам добавить некоторые данные в библиотеку, которые мы можем отобразить с помощью наших (еще не созданных) представлений и шаблонов.

Урок #3 — Создание первого Django приложения

Видеоурок

  • файл для работы с базой данных;
  • шаблоны различных страниц или блоков, которые будут отображены на сайте;
  • файл проверяющий адрес ссылки и открывающий нужный HTML шаблон.

Теперь при переходе по ссылке webexample (можно указать любую ссылку) django будет подключать приложение webexample. При этом он сразу будет смотреть на файл urls в этом приложении, который отвечает за ссылки второго уровня, наприме: webexample/course. В зависимости от такой ссылки будут подключаться различные HTML шаблоны для отображения на сайте.


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

Основы использования фреймворка django при построении Web-сайта

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

Абстрагируясь от низкоуровневого процесса Web-строительства, django позволяет разработчикам быстро создавать основанные на базах данных динамичные Web-сайты. Одним из основных преимуществ django является переносимость созданных на ее основе продуктов в силу переносимости их базиса – языка высокого уровня Python.

Произносится слово django мягко, без выраженного звука «д», как «жан-го».

Django включает в себя Model View Controller (MVC) – инструмент, позволяющий разделить общую архитектуру на отдельные части. При этом управляющая логика разделена на три отдельных компонента так, что модификация одного из них оказывает минимальное воздействие на другие части. К таким компонентам относят разделяемые данные, логику и слои визуализации (view layers). В общем случае такая концепция позволяет разделить разработку информационного наполнения на уровне базы данных и разработку Web-страниц.

Django базируется на классе Python django.db.models.Model , который задает данные модели так, чтобы они были пригодны к использованию на Web-сайтах. Эти данные определяются соответствующими атрибутами объектов, которые сохраняются в базе данных в процессе работы. При создании сайта создается подкласс класса Model и добавляется поле членов в класс для задания специфических данных.

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

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

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

Конфигурирование settings.py файла

Основным конфигурационным файлом при построении Web-сайта на django является файл settings.py. При создании каждого нового проекта django автоматически добавляет в него новый файл settings.py в корневую директорию проекта. Файл содержит конфигурационные опции для баз данных, установленных приложений и другие многочисленные параметры. Обычно этот файл видоизменяется при задании глобальных конфигурационных свойств Web-сайта.

Цукерберг рекомендует:  Php - Работа с Zip архивами в PHP

Для доступа к этому файлу необходимо импортировать настройки, как в приведенном ниже примере:

Примечание. Не надо пытаться редактировать настройки файла settings.py «на лету», путем правки Python кода. Это может иметь непредвиденно плохой или неопределенный результат.

Использование утилиты manage.py

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

  • startproject – создание нового django-проекта. Создается директория со всеми необходимыми файлами проекта;
  • startapp – создание нового приложения для django-проекта;
  • syncdb – синхронизация данных модели проекта с SQL-базой данных, поддерживающей проект;
  • runserver – старт сервера разработки;
  • shell – запуск оболочки интерпретатора Python для доступа к данным проекта, включая и базу данных;
  • dbshell – запуск SQL-клиента командной строки для доступа к базе данных.

Как правило, утилита используется из корневой директории проекта. Более подробно об этой утилите можно узнать на сайте http://www.djangoproject.com/documentation/django-admin.

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

Django поставляется с встроенным легким HTTP-сервером для тестирования разрабатываемых проектов. После установки django не нужно будет искать и разворачивать какой-либо иной Web-сервер для тестирования кода. Встроенный сервер тратит мало системных ресурсов и очень функционален для апробации нового сайта.

Для старта сервера необходимо, находясь в корневой директории проекта, выполнить команду: python manage.py runserver .

Примечание. Для остановки сервера нажмите комбинацию клавиш Ctrl+Break или Ctrl+C.

Административный интерфейс

Django поставляется с удобным административным интерфейсом, позволяющим создавать, изменять и просматривать данные в административном контексте. Доступ к административному интерфейсу возможен из Web-браузера при введении URL вида: http://127.0.0.1:8000/admin/. При этом открывается окно, как показано на рисунке 4.

Рисунок 4.

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

Установка фреймворка django

До начала установки django необходимо убедиться в том, что в системе установлена версия Python 2.3 или выше. Получить Python можно по адресу http://www.python.org/download. После этого необходимо убедиться, что в системе установлена СУБД MySQL. Наличие какой бы то ни было СУБД в системе не является обязательным условием для установки и настройки django. В этой статье будет использоваться в качестве примера СУБД MySQL, поэтому будем считать, что она уже установлена и настроена.

Django можно получить с сайта разработчиков и воспользоваться либо официальным релизом, либо версией для разработчиков. В первом случае нужно скачать дистрибутив с http://www.djangoproject.com/download, а во втором – воспользоваться SVN следующим образом:

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

Выполнение последней команды должно показать в консоли интерпретатора вывод информации о версии django, что свидетельствует о правильном процессе установки.

Во втором случае нужно распаковать скачанный тарбол командой:

затем выполнить серию команд:

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

Рисунок 1.

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

Рассмотрим создание простого проекта, производя все действия по конфигурированию из командной строки системы Ubuntu Linux.

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

Создайте директорию с именем iFriends (так будет называться проект примера).

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

Эта команда создаст новый проект и поместит в него все необходимые файлы. Затем следует запустить HTTP-сервер разработки.

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

Для запуска HTTP-сервера, обеспечивающего разработку проекта, исполните команду:

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

Примечание. Если при выполнении этой команды возникнет ошибка, говорящая о том, что порт для сервера уже занят другим приложением (рисунок 2), то повторите команду, назначив другой порт HTTP-серверу: python manage.py runserver 0.0.0.0:9000, что заставит сервер прослушивать все имеющиеся в системе ip-адреса по порту 9000.

Рисунок 2.

Доступ к серверу можно проверить при переходе в браузере по URL: http://127.0.0.1:8000/ или (в последнем случае) http://127.0.0.1:9000/.

Если все было сделано правильно и не было ошибок, то в браузере можно будет увидеть картинку, как на рисунке 3.

Рисунок 3.

Создание и конфигурирование базы данных

До начала конфигурирования БД необходимо обеспечить в MySQL поддержку именования таблиц буквами верхнего регистра. Для этого надо открыть файл /django/db/backends/__init__.py и в него добавить:

Конфигурирование БД состоит из ряда SQL-директив, написанных ниже:

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

Синхронизация данных проекта с базой данных

Процесс синхронизации создает в базе данных все необходимые таблицы для поддержки проекта. Внесите в settings.py следующие изменения:

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

Вначале остановите HTTP-сервер разработки. Затем перейдите в рутовую директорию проекта iFriends. Находясь там, введите команду в консоли:

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

Установка приложения

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


Находясь в рутовой директории проекта iFriend, выполните команду в консоли:

Эта команда создаст новое приложение с именем People, что выразится в появлении новой поддиректории People внутри iFriend и серии файлов __init__.py models.py и views.py.

Далее нужно создать класс Person в модели People путем изменения скрипта models.py. Нужно добавить в файл следующие строки:

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

Для активизации модели Person нужно внести некоторые изменения в файл iFriends\settings.py. В раздел INSTALLED_APPS внести:

затем сохранить файл и выполнить синхронизацию с базой данных:

процесс синхронизации создаст необходимые таблицы в базе iFriends для приложения People.

Добавление данных, используя API

Здесь будет рассмотрен процесс использования django shell и интерфейса базы данных для объекта Person в таблицу People. Django shell представляет собой Python shell, дающую возможность получить доступ к API базы данных, используя при этом django как посредника.

Нужно перейти в рут-каталог проекта iFriends. Затем открыть django shell командой:

после чего импортировать класс Person из People-пакета:

Затем создать объект Person с именем “p”:

и сохранить его:

Далее, используя функцию Person.objects.all(), проверить факт создания этого объекта:

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

Конфигурирование URLConfFile

Теперь рассмотрим конфигурирование URLConfFile, который задает порядок доступа к установленному приложению через Web. URLConfFile представляет собой Python-скрипт, который описывает специфические просмотрщики или «вьюхи» (views), доступные через вводимые в браузере URL. Когда django-сервер получает такой URL-запрос, он парсит запрос на шаблоны, содержащиеся в URLConfFile. Потом этот запрос транслируется в специфическую Python-функцию, которая и исполняет views.py-файл.

Местонахождение URLConfFile задается в параметре ROOT_URLCONF файла settings.py. По умолчанию местонахождением является рут-каталог проекта.

Отредактируем файл iFriends\urls.py, внеся в строку с urlpatterns следующий код:

Затем файл можно сохранить.

После редактирования URLConfFile нужно добавить «вьюхи» (views) в приложение.

Создание простого view

Откроем для редактирования iFriends/People/views.py. Добавим в этот файл следующий код:

После этого файл можно сохранить. Затем надо сменить каталог на корневой для проекта iFriends и там дать команду на запуск HTTP-сервера разработки:

В браузере перейти по URL: http://127.0.0.1:8000/People ,где можно будет увидеть Web-страницу, как на рисунке 5.

Рисунок 5.

Таким образом, был создан django-проект с именем iFriends, в рамках которого сконфигурирован доступ в СУБД MySQL. Затем создано приложение с именем People, добавлен класс Person, а в базу был внесен объект Person. Затем было сконфигурировано поведение URL-парсера для поддержки «вьюхи» и добавлен необходимый код, который в рамках этой «вьюхи» отображал список объектов класса Person.

Выводы

В статье рассмотрены вопросы использования фреймворка django как инструмента построения Web-сайта. Последовательно дан общий обзор django, понятий моделей, шаблонов и просмотрщиков («вьюх»). Рассмотрен процесс установки и настройки django, ее конфигурационных файлов. В пошаговом режиме проведен экскурс через весь процесс создания простой, но работоспособной Web-страницы с использованием django. Весь материал снабжен примерами и исходным кодом на языке Python.

Django Начало работы с Django

замечания

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

  • легкий и автономный веб-сервер для разработки и тестирования
  • система сериализации и проверки формы, которая может переводить между HTML-формами и значениями, подходящими для хранения в базе данных
  • система шаблонов, использующая концепцию наследования, заимствованную из объектно-ориентированного программирования
  • структура кэширования, которая может использовать любой из нескольких методов кеширования для классов промежуточного программного обеспечения, которые могут вмешиваться на разных этапах обработки запроса и выполнять пользовательские функции
  • внутренняя диспетчерская система, которая позволяет компонентам приложения передавать события друг другу через заранее определенные сигналы
  • система интернационализации, включая перевод собственных компонентов Django на различные языки
  • система сериализации, которая может создавать и читать XML и / или JSON-представления экземпляров модели Django
  • система для расширения возможностей механизма шаблонов
  • интерфейс к встроенной платформе тестирования Python

Версии

Версия Дата выхода
1,11 2020-04-04
1,10 2020-08-01
1,9 2015-12-01
1,8 2015-04-01
1,7 2014-09-02
1,6 2013-11-06
1,5 2013-02-26
1.4 2012-03-23
1,3 2011-03-23
1.2 2010-05-17
1,1 2009-07-29
1,0 2008-09-03

Полный пример приветствия.

Шаг 1 Если у вас уже установлен Django, вы можете пропустить этот шаг.

Шаг 2 Создайте новый проект

Это создаст папку с именем hello которая будет содержать следующие файлы:

Шаг 3 Внутри модуля hello (папка, содержащая __init.py__ ) создайте файл с именем views.py :

и добавьте следующее содержание:

Это называется функцией просмотра.

Шаг 4 Отредактируйте hello/urls.py следующим образом:

который связывает функцию вида hello() с URL-адресом.

Шаг 5 Запустите сервер.

Шаг 6

Просмотрите http://localhost:8000/ в браузере, и вы увидите:

Дружественный к развертыванию проект с поддержкой Docker.

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

Вы можете найти подходящий шаблон проекта Django на GitHub .

Структура проекта

Мне нравится сохранять service каталог с именем service для каждого проекта, благодаря Dockerfile я могу использовать один и тот же Dockerfile во всех моих проектах. Разделение требований и настроек уже хорошо описано здесь:
Использование нескольких файлов требований
Использование нескольких настроек

Dockerfile

С предположением, что только разработчики используют Docker (не каждый dev ops доверяет ему в эти дни). Это может быть devel.dockerfile dev:

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

компоновать

Docker compomp пригодится — особенно когда у вас есть несколько сервисов для локального запуска. docker-compose.yml :

Nginx

Ваша среда разработки должна быть как можно ближе к среде prod, поэтому мне нравится использовать Nginx с самого начала. Вот пример файла конфигурации nginx:

использование


Концепции Django

django-admin — это инструмент командной строки, который поставляется с Django. Он поставляется с несколькими полезными командами для начала и управления проектом Django. Команда такая же, как ./manage.py , с той разницей, что вам не нужно находиться в каталоге проекта. DJANGO_SETTINGS_MODULE быть установлена ​​переменная среды DJANGO_SETTINGS_MODULE .

Проект Django представляет собой кодовую базу Python, содержащую файл настроек Django. Проект может быть создан администратором Django с помощью команды django-admin startproject NAME . Обычно проект имеет файл manage.py на верхнем уровне и файл корневого URL-адреса, называемый urls.py manage.py — это версия django-admin конкретного проекта и позволяет запускать команды управления в этом проекте. Например, чтобы запустить проект локально, используйте python manage.py runserver . Проект состоит из приложений Django.

Приложение Django представляет собой пакет Python, содержащий файл моделей (по умолчанию — models.py ) и другие файлы, такие как URL-адреса приложений и представления. Приложение можно создать с помощью команды django-admin startapp NAME (эта команда должна запускаться из вашей директории проекта). Чтобы приложение было частью проекта, оно должно быть включено в список INSTALLED_APPS в settings.py . Если вы использовали стандартную конфигурацию, Django поставляется с несколькими приложениями своих собственных предустановленных приложений, которые будут обрабатывать вас как аутентификацию . Приложения могут использоваться в нескольких проектах Django.

Django ORM собирает все модели баз данных, определенные в models.py и создает таблицы базы данных на основе этих классов моделей. Для этого сначала настройте свою базу данных, изменив параметр DATABASES в settings.py . Затем, как только вы определили свои модели баз данных , запустите python manage.py makemigrations за которым следует python manage.py migrate чтобы создать или обновить схему вашей базы данных на основе ваших моделей.

Пример простого файла Hello World

В этом примере вы покажете минимальный способ создания страницы Hello World в Django. Это поможет вам понять, что django-admin startproject example проекта django-admin startproject example основном создает кучу папок и файлов и что вам не обязательно нужна эта структура для запуска вашего проекта.

Создайте файл с именем file.py

Скопируйте и вставьте следующий код в этот файл.

Перейдите к терминалу и запустите файл с помощью этой команды python file.py runserver .

Откройте браузер и перейдите к 127.0.0.1:8000 .

Запуск проекта

Django — это основа веб-разработки на основе Python. Django 1.11 (последняя стабильная версия) требует установки Python 2.7 , 3.4 , 3.5 или 3.6 . Предполагая, что pip доступен, установка выполняется так же просто, как выполнение следующей команды. Имейте в виду, что, опуская версию, как показано ниже, будет установлена ​​последняя версия django:

Для установки конкретной версии django предположим, что версия django 1.10.5 , выполните следующую команду:

Веб-приложения, созданные с использованием Django, должны находиться в проекте Django. Вы можете использовать команду django-admin для запуска нового проекта в текущем каталоге:

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

Это создаст следующую структуру проекта:

Чтобы запустить приложение, запустите сервер разработки

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

По умолчанию команда runserver запускает сервер разработки на внутреннем IP- runserver на порту 8000 . Этот сервер будет автоматически перезагружаться при внесении изменений в ваш код. Но если вы добавите новые файлы, вам придется вручную перезапустить сервер.

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

Если вы хотите изменить IP-адрес сервера, передайте его вместе с портом.

Обратите внимание, что runserver работает только для отладки и локального тестирования. Специализированные серверные программы (такие как Apache) всегда должны использоваться в производстве.

Добавление приложения Django

Проект Django обычно содержит несколько apps . Это просто способ структурирования вашего проекта в небольших поддерживаемых модулях. Чтобы создать приложение, перейдите в свою папку проекта (где находится файл manage.py ) и запустите команду startapp (измените myapp на все, что вы хотите):

Это создаст для вас папку myapp и некоторые необходимые файлы, например models.py и views.py .

Чтобы Django узнал о myapp , добавьте его в свой файл settings.py :

Папка-структура проекта Django может быть изменена в соответствии с вашими предпочтениями. Иногда папка проекта переименовывается в /src чтобы избежать повторения имен папок. Типичная структура папок выглядит так:

Виртуальная среда

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

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

Python 3.3+

Python 3.3+ уже включает стандартный модуль venv , который вы обычно можете назвать pyvenv . В средах, где команда pyvenv недоступна, вы можете получить доступ к тем же функциям, напрямую вызвав модуль как python3 -m venv .

Чтобы создать виртуальную среду:

Python 2

Если вы используете Python 2, вы можете сначала установить его как отдельный модуль из pip:

Затем создайте среду, используя команду virtualenv :

Активировать (любая версия)

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

Чтобы «активировать» виртуальную среду (любую версию Python)

Это изменяет ваше приглашение, чтобы указать, что виртуальная среда активна. ( ) $

Отныне все, установленное с помощью pip будет установлено в вашу виртуальную папку env, а не в масштабе всей системы.

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

Альтернативно: используйте virtualenvwrapper

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

Альтернативно: используйте pyenv + pyenv-viritualenv

В средах, где вам нужно обрабатывать несколько версий Python, вы можете использовать virtualenv вместе с pyenv-virtualenv:

При использовании virtualenvs часто бывает полезно установить PYTHONPATH и DJANGO_SETTINGS_MODULE в сценарии postactivate .

Укажите путь к проекту

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

Создайте новый файл с именем /.project . Содержимое файла должно быть ТОЛЬКО в качестве пути к каталогу проекта.

Теперь инициируйте свою виртуальную среду (используя source /bin/activate или workon my_virtualenv ), и ваш терминал изменит каталоги в каталог /path/to/project/directory .

Джанго графики — дата и время ось

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

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

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

Создан 15 апр. 11 2011-04-15 09:18:24 noemi

1 ответ

Посмотрите документацию для plot_date . Удобно plot_date принимает аналогичные аргументы plot . Вызов может выглядеть следующим образом:

Используя matplotlib.dates , то вы можете настроить формат ваших х-меток осей.
Простой пример:
Далее будет указано, что ось x отображается только каждый третий месяц в формате Jan ’09 (при условии, что англоязычная локаль).

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

  1. изменения вашей модели использовать DateTimeField или
  2. использовать Python для combine их.

перебрать двух последовательностей и комбинировать их можно использовать zip (код только для иллюстративных целей, не обязательно оптимизированными):

Feel бесплатно откройте другой вопрос, если вы застряли в реализации специфики.

Создан 16 апр. 11 2011-04-16 05:00:42 bernie

Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих