Django учебник: Топ книг по фреймворку Django / Блог компании Mail.ru Group / Хабр

Содержание

Топ книг по фреймворку Django / Блог компании Mail.ru Group / Хабр

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

Django. Разработка веб-приложений на Python — Джефф Форсье, Пол Биссекс, Уэсли Дж. Чан

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

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

Django: практика создания Web-сайтов на Python — Владимир Дронов

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

REST APIs with Django: Build powerful web APIs with Python and Django — William S. Vincent

От рынка российского перейдём к западному, там литературы, причём качественной, значительно больше. Перед вами одна из лучших книг для изучения Django, в частности, при создании веб-API. Несмотря на относительно маленький объём (менее 200 страниц), здесь очень подробно описан процесс разработки от общей теории веб-интерфейсов до схем и оформления документации.

Test-Driven Development with Python: Obey the Testing Goat: Using Django, Selenium, and JavaScript — Harry J. W. Percival

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

Django for Beginners: Build websites with Python and Django — William S. Vincent

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

  1. Все действия подробно разжёваны, поэтому у читателя не остаётся вопросов: «Почему здесь так?»
  2. Если даже вам что-то непонятно, можно послать свой вопрос по электронной почте. Говорят, Уильям отвечает всем.

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

Two Scoops of Django 1.11: Best Practices for the Django Web Framework — Daniel Roy Greenfeld

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

Mastering Python: Machine Learning, Data Structures, Django, Object Oriented Programming and Software Engineering — Michael B. White

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

Django Unleashed — Andrew Pinkham

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

Build your first website with Django 2.1: Master the basics of Django while building a fully-functioning — Nigel George

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

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

А как вы изучали Django?

Документация Django 3.0 на русском языке | Документация Django 3.0

Всё, что нужно знать о Django.

Получение помощи¶

Есть проблемы? Мы с радостью поможем!

Как организована документация¶

У Django большой объем документации. Общий обзор того, как она организована, поможет вам узнать, где искать необходимое:

  • Учебники. Пройдите серию шагов по созданию веб-приложения. Начните с них, если вы новичок в Django или разработке веб-приложений. Также посмотрите «Первые шаги» ниже.
  • Руководства объясняют ключевые темы и концепции на достаточно высоком уровне и предоставляют полезную справочную информацию и пояснения.
  • Справочные руководства содержат техническую информацию по API и другим аспектам работы Django. Они описывают, как всё работает и как это использовать, но предполагают, что у вас есть базовое понимание ключевых понятий.
  • Практические руководства являются рецептами. Они проведут вас через шаги, связанные с решением ключевых проблем и вариантов использования Django. Они более продвинуты, чем учебные пособия, и предполагают, что вы знаете как Django работает.

Первые шаги¶

Новичок в Django или в программировании? Начните изучение отсюда!

Уровень модели¶

Django предоставляет свой уровень абстракции («модели») для структурирования и управления данными вашего веб-приложения. Узнайте больше об этом ниже:

Представления¶

Django has the concept of «views» to encapsulate the logic responsible for
processing a user’s request and for returning the response. Find all you need
to know about views via the links below:

The template layer¶

The template layer provides a designer-friendly syntax for rendering the
information to be presented to the user. Learn how this syntax can be used by
designers and how it can be extended by programmers:

Forms¶

Django provides a rich framework to facilitate the creation of forms and the
manipulation of form data.

The development process¶

Learn about the various components and tools to help you in the development and
testing of Django applications:

The admin¶

Find all you need to know about the automated admin interface, one of Django’s
most popular features:

Безопасность¶

Security is a topic of paramount importance in the development of Web
applications and Django provides multiple protection tools and mechanisms:

Internationalization and localization¶

Django offers a robust internationalization and localization framework to
assist you in the development of applications for multiple languages and world
regions:

Performance and optimization¶

There are a variety of techniques and tools that can help get your code running
more efficiently — faster, and using fewer system resources.

Geographic framework¶

GeoDjango intends to be a world-class geographic
Web framework. Its goal is to make it as easy as possible to build GIS Web
applications and harness the power of spatially enabled data.

Other core functionalities¶

Learn about some other core functionalities of the Django framework:

Django — проект с открытым исходным кодом¶

Learn about the development process for the Django project itself and about how
you can contribute:

Лучшие книги по Django для новичков и опытных разработчиков

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

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

Two scoops of Django for 1.11

Дэниел Гринфельд и Одри Гринфилд

книги, Лучшие книги по Django для новичков и опытных разработчиков

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

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

Книгу вы найдете в нашем Telegram-канале по этой ссылке.

Lightweight Django

Эльман и Марк Лавин

книги, Лучшие книги по Django для новичков и опытных разработчиков

Эта книга позволяет по-новому взглянуть на использование фреймворка Django.  Она показывает опытным разработчикам, как применять REST API, WebSockets и клиентские MVC-инфраструктуры, такие как Backbone.js, в новых или существующих проектах. Книга помогает в изучении Django и создании проектов.

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

High Performance Django

Питер Баумгартнер и Янн Малет

книги, Лучшие книги по Django для новичков и опытных разработчиков

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

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

Django Unleashed

Эндрю Пинкхем

книги, Лучшие книги по Django для новичков и опытных разработчиков

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

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

Mastering Django: Core – The Complete Guide to Django 1.8 LTS

Найджел Джордж

книги, Лучшие книги по Django для новичков и опытных разработчиков

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

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

Скачать книгу можно из нашего telegram-канала по этой ссылке.

Test-Driven Development with Django

Кевин Харви

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

Автор раскрывает такие темы , как различие между функциональным и модульным тестированием, использование RequestFactory и TestClient в Django, тестовая интеграция с внешними API, использование других инструментов, таких как VCR, Django Rest Framework и т.д.

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

The Definitive Guide to Django: Web Development Done Right

Адриан Головатый и Якоб Каплан-Мосс

книги, Лучшие книги по Django для новичков и опытных разработчиков

Эта книга по Django представляет собой исчерпывающее руководство для начинающих и продолжающих пользователей фреймворка. Авторы раскрывают основные принципы работы Django, учат настраивать сам фреймворк, а также рассказывают об установке, настройке и развертывании приложений. Из этой книги вы узнаете о том, как реализовать в приложении вывод содержимого, отличного от HTML (RSS-каналы и PDF-файлы). Также вы познакомитесь с темами кэширования и управления пользователями.

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

Django for Beginners: Build websites with Python and Django

Уильям С. Винсент

книги, Лучшие книги по Django для новичков и опытных разработчиков

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

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

Из книги Django for beginners вы узнаете, как настроить фреймворк, а также как создать приложение Hello World, блог, доску объявлений, различные формы, учетные записи пользователей и т. д.

Книгу вы найдете в нашем Telegram-канале по этой ссылке.

В заключение

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

ТОП-5 книг по Django (Python) на русском языке – Библиотека программиста

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

Django. Адриан Головатый, Джейкоб Каплан-Мосс

Книга Django. Подробное руководство

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

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

Достоинства:

  • отлично структурирована;
  • радует достаточное количество теории и примеров;
  • хорошее качество книги;
  • позволяет изучить Django на начальном этапе, а в дальнейшем использовать книгу, как справочник.

Недостатки:

  • некачественный перевод;
  • некоторая информация уже устаревшая.

Изучаем Python. Эрик Мэтиз

Книга Изучаем Python. Программирование игр, визуализация данных, веб-приложения

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

Издание отлично подходит для новичков.

Достоинства:

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

Недостатки:

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

Django. Уэсли Чан, Джефф Форсье, Пол Биссекс

Книга Django. Разработка веб-приложений на Python

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

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

Достоинства:

  • понятный стиль написания;
  • легко воспринимается информация;
  • подробное описание без воды;
  • много полезной информации для версии Django 1,0 или 1,2.

Недостатки:

  • много устаревшей информации.

Django: практика создания Web-сайтов на Python. Владимир Дронов

Книга Django 2.1. Практика создания веб-сайтов на Python

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

Достоинства:

  • пошаговые инструкции по разработке веб-сайтов;
  • адекватная цена.

Недостатки:

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

Django 2 в примерах. Антонио Меле

Книга Django 2 в примерах

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

Достоинства:

  • реальные проекты в книге дают прокачать свои навыки;
  • понятный стиль подачи материала;
  • последовательность излагаемой информации.

Недостатки:

  • неточности и ошибки в примерах кода;
  • новичкам нужно иметь представления о языке Python.

Выводы

  1. Лучшая книга в библиотеке начинающего программиста для старта в изучении Python и Django – «Изучаем Python» Эрик Мэтиз.
  2. Лучшее руководство для тех, кто уже имеет навыки программирования – «Django» Адриан Головатый, Джейкоб Каплан-Мосс.
  3. «Django 2 в примерах» — подойдет широкому кругу аудитории. Отличная книга для тех, кто хочет освоить работу с Django и узнать новые подходы.

Делитесь хорошими книгами по Django не попавшими в эту подборку в комментариях!

Глава 1: DjangoBook по-русски | Django на русском

Данная книга посвящена Django, среде[1]
WEB[2] разработки, которая
позволяет сэкономить время и превращает работу в
развлечение. Используя Django, вы можете с минимальными усилиями
создавать и обслуживать высококачественные приложения.

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

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

Что такое среда разработки?

Django является видным представителем нового поколения
сред разработки, но что же конкретно
подразумевают под этим термином?

Для того, чтобы ответить на этот вопрос давайте рассмотрим
дизайн приложения написанного на языке Python без использования среды разработки. На протяжении всей
книги мы будем использовать данный подход, чтобы показать вам
основные способы выполнить работу без
вспомогательных средств, в надежде, что вы разберётесь почему
эти средства так полезны. Также важно знать как можно решить
задачу на низком уровне, так как высокий уровень
(вспомогательные средства) не всегда доступен. И очень важно то,
что знание почему что-то работает именно
так, а не иначе, делает вас опытнее.

Одним из простых, наиболее прямолинейных способов создать с нуля
вебприложение на языке Python является использование стандарта
Common Gateway Interface (CGI), который был популярен, начиная с
1998 года. Кратко рассмотрим как это работает: создаётся скрипт
на языке Python, который выводит HTML, скрипт сохраняется на веб
сервере в файле с расширением .cgi, затем к
скрипту можно обращаться через веб браузер. Вот и всё.

Ниже приведён простой CGI скрипт, написанный на языке Python,
который отображает десять наиболее свежих книг из базы
данных. Не беспокойтесь о деталях, просто рассмотрите как он
работает:

#!/usr/bin/env python

import MySQLdb

print "Content-Type: text/html"
print
print "<html><head><title>Книги</title></head>"
print "<body>"
print "<h2>Книги</h2>"
print "<ul>"

connection = MySQLdb.connect(user='me', passwd='letmein', db='my_db')
cursor = connection.cursor()
cursor.execute("SELECT name FROM books ORDER BY pub_date DESC LIMIT 10")
for row in cursor.fetchall():
    print "<li>%s</li>" % row[0]

print "</ul>"
print "</body></html>"

connection.close()

Во-первых, согласно требованиям CGI, код выводит строку
«Content-Type», затем пустую строку. Скрипт
выводит необходимые HTML теги, подключается к базе данных и
выполняет запрос для получения имён последних десяти
книг. Обрабатывая результат запроса, скрипт создаёт
ненумерованный список имён. Наконец, скрипт закрывает HTML теги
и закрывает соединение с базой данных.

Для одиночной динамической страницы, подобной этой, методика
«написать всё с нуля» не всегда плоха. Во-первых,
этот код прост для понимания даже неопытным разработчиком и его
легко установить на «боевую»[3] систему — просто сохранить в
файл с расширением .cgi и зайди браузером.

Но несмотря на свою простоту, данный подход имеет ряд проблем и
недостатков. Задайте себе эти вопросы:

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

  • Действительно ли разработчик должен беспокоиться о выводе
    строки «Content-Type» и помнить о
    необходимости закрывать соединение с базой данных? Такие
    вещи снижают производительность разработчика и увеличивают
    вероятность появления ошибок в коде. Такими задачами
    должна заниматься некая общая инфраструктура.

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

  • Что произойдёт, если дизайнер, который не имеет опыта разработки на языке Python, пожелает поменять вид страницы? Один неверный символ может уронить целое приложение. В идеале, при отображении страницы, логика страницы — получение названий книг из базы данных — должна быть отделена от вывода HTML. В этом случае дизайнер может вносить необходимые изменения в HTML без влияния на всё остальное.

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

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

             

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

Обзор

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

from django.db import models

class MyModelName(models.Model):
    """
    A typical class defining a model, derived from the Model class.
    """

    # Fields
    my_field_name = models.CharField(max_length=20, help_text="Enter field documentation")
    ...

    # Metadata
    class Meta: 
        ordering = ["-my_field_name"]

    # Methods
    def get_absolute_url(self):
         """
         Returns the url to access a particular instance of MyModelName.
         """
         return reverse('model-detail-view', args=[str(self.id)])
    
    def __str__(self):
        """
        String for representing the MyModelName object (in Admin site etc.)
        """
        return self.field_name

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

Поля

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

my_field_name = models.CharField(max_length=20, help_text="Enter field documentation")

Наш вышеприведенный пример имеет одно поле, называемое 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 автоматически добавит для этой цели поле.

Есть много других вариантов — вы можете просмотреть 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, как показано на рисунке.

class Meta:
    ordering = ["-my_field_name"]
    ...

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

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

ordering = ["title", "-pubdate"]

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

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

verbose_name = "BetterName"

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

Методы

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

def __str__(self):
    return self.field_name

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

def get_absolute_url(self):
    """
    Returns the url to access a particular instance of the model.
    """
    return reverse('model-detail-view', args=[str(self.id)])

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

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

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

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

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

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

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

# Create a new record using the model's constructor.
a_record = MyModelName(my_field_name="Instance #1")

# Save the object into the database.
a_record.save()

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

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

# Access model field values using Python attributes.
print(a_record.id) #should return 1 for the first record. 
print(a_record.my_field_name) # should print 'Instance #1'

# Change record by modifying the fields, then calling save().
a_record.my_field_name="New Instance Name"
a_record.save()
Поиск записей

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

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

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

all_books = Book.objects.all()

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

wild_books = Book.objects.filter(title__contains='wild')
number_wild_books = Book.objects.filter(title__contains='wild').count()

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

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

books_containing_genre = Book.objects.filter(genre__name__icontains='fiction')  # Will match on: Fiction, Science fiction, non-fiction etc.

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

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

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

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

from django.db import models

# Create your models here.

Модель жанра

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

class Genre(models.Model):
    """
    Model representing a book genre (e.g. Science Fiction, Non Fiction).
    """
    name = models.CharField(max_length=200, help_text="Enter a book genre (e.g. Science Fiction, French Poetry etc.)")
    
    def __str__(self):
        """
        String for representing the Model object (in Admin site etc.)
        """
        return self.name

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

Модель книги

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

from django.urls import reverse #Used to generate URLs by reversing the URL patterns

class Book(models.Model):
    """
    Model representing a book (but not a specific copy of a book).
    """
    title = models.CharField(max_length=200)
    author = models.ForeignKey('Author', on_delete=models.SET_NULL, null=True)
    # Foreign Key used because book can only have one author, but authors can have multiple books
    # Author as a string rather than object because it hasn't been declared yet in the file.
    summary = models.TextField(max_length=1000, help_text="Enter a brief description of the book")
    isbn = models.CharField('ISBN',max_length=13, help_text='13 Character <a href="https://www.isbn-international.org/content/what-isbn">ISBN number</a>')
    genre = models.ManyToManyField(Genre, help_text="Select a genre for this book")
    # ManyToManyField used because genre can contain many books. Books can cover many genres.
    # Genre class has already been defined so we can specify the object above.
    
    def __str__(self):
        """
        String for representing the Model object.
        """
        return self.title
    
    
    def get_absolute_url(self):
        """
        Returns the url to access a particular book instance.
        """
        return reverse('book-detail', args=[str(self.id)])

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

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

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

Модель BookInstance

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

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

class BookInstance(models.Model):
    """
    Model representing a specific copy of a book (i.e. that can be borrowed from the library).
    """
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, help_text="Unique ID for this particular book across whole library")
    book = models.ForeignKey('Book', on_delete=models.SET_NULL, null=True) 
    imprint = models.CharField(max_length=200)
    due_back = models.DateField(null=True, blank=True)

    LOAN_STATUS = (
        ('m', 'Maintenance'),
        ('o', 'On loan'),
        ('a', 'Available'),
        ('r', 'Reserved'),
    )

    status = models.CharField(max_length=1, choices=LOAN_STATUS, blank=True, default='m', help_text='Book availability')

    class Meta:
        ordering = ["due_back"]
        

    def __str__(self):
        """
        String for representing the Model object
        """
        return '%s (%s)' % (self.id,self.book.title)

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

  • 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-адреса для отображения отдельного автора.

class Author(models.Model):
    """
    Model representing an author.
    """
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)
    date_of_birth = models.DateField(null=True, blank=True)
    date_of_death = models.DateField('Died', null=True, blank=True)
    
    def get_absolute_url(self):
        """
        Returns the url to access a particular author instance.
        """
        return reverse('author-detail', args=[str(self.id)])
    

    def __str__(self):
        """
        String for representing the Model object.
        """
        return '%s, %s' % (self.last_name, self.first_name)

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

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

python3 manage.py makemigrations
python3 manage.py migrate

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

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

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

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

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

Резюме

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

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

Смотрите также

10 лучших материалов для изучения Django

Не знаете, с чего начать изучение Django? Тогда данная подборка ресурсов точно для вас!

1. Начало работы с Джанго

Не знаете, с чего начать? Вопрос «А какую же версию Джанго использовать?» не дает вам покоя? Значит, смело переходите по данной ссылке и, не сомневайтесь, данный вопрос будет решен.

2. Документация по Джанго

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

3. Танго с Django

Данная книга — это ваш персональный гид в мире работы с Джанго. По мере прочтения книги вы изучите не только как станцевать танго с Джанго, но и такие популярные вещи, как Javascript/jQuery, CSS/Bootstrap и HTML, PIP и Git/GitHub.

4. Онлайн-книга по изучению Django

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

5. Django 1.0 Website Development

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

6. Пишем свое первое приложение на Django

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

7. Туториалы по Django

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

8. Видеокурс по веб-разработке на Django

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

9. Видео-туториалы по Django

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

10. Python Web Development with Django

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

Для полноты картины рекомендуем также посмотреть наш видеокурс по фреймворку Django.

Хотите порекомендовать другие ресурсы? Пишите в комментариях, и мы внесем их в следующие статьи!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

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

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

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

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

Это файлы:

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

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

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

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

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

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

03 августа, 2020-15: 50:53
Django версии 3.0 с использованием настроек mysite.settings
Запуск сервера разработки на 

.

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

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

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

Теперь откройте mysite / settings.py . Это обычный модуль Python с
переменные уровня модуля, представляющие настройки Django.

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

Если вы хотите использовать другую базу данных, установите соответствующую базу данных
привязки и измените следующие ключи в
БАЗЫ ДАННЫХ 'default' элемент, соответствующий вашему подключению к базе данных
настройки:

  • ДВИГАТЕЛЬ — Либо
    'джанго.db.backends.sqlite3 ',
    'django.db.backends.postgresql' ,
    'django.db.backends.mysql' , или
    'django.db.backends.oracle' . Также доступны другие бэкенды.
  • ИМЯ — Имя вашей базы данных. Если вы используете SQLite,
    база данных будет файлом на вашем компьютере; в этом случае ИМЯ
    должен быть полным абсолютным путем, включая имя файла, этого файла.
    значение по умолчанию, os.path.join (BASE_DIR, 'db.sqlite3') , сохранит файл
    в каталоге вашего проекта.

Если вы не используете SQLite в качестве базы данных, дополнительные настройки, такие как
USER , PASSWORD и HOST должны быть добавлены.
Для получения дополнительных сведений см. Справочную документацию для БАЗЫ ДАННЫХ .

Для баз данных, отличных от SQLite

Если вы используете базу данных помимо SQLite, убедитесь, что вы создали
база данных к этому моменту. Сделайте это с помощью « CREATE DATABASE имя_базы_данных;
в интерактивной подсказке вашей базы данных.

Также убедитесь, что пользователь базы данных указан в mysite / settings.py
имеет право «создать базу данных». Это позволяет автоматически создавать
тестовая база данных, которая понадобится в дальнейшем
руководство.

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

Пока вы редактируете mysite / settings.py , установите TIME_ZONE на
ваш часовой пояс.

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

По умолчанию INSTALLED_APPS содержит следующие приложения, все из которых
приходят с Django:

Эти приложения включены по умолчанию для удобства в общем случае.

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

Команда migrate смотрит на

.

Django Tutorials для начинающих

Guru99

  • Home
  • Testing

      • Back
      • Agile Testing
      • BugZilla
      • Cucumber
      • 000 JB
      • 9000 9000 JB 9000 Testing 9000 9000 9000 9000 J2

      • JUnit
      • LoadRunner
      • Ручное тестирование
      • Мобильное тестирование
      • Mantis
      • Почтальон
      • QTP
      • Назад
      • Центр контроля качества (ALM)
      • RPA 9000 Test5
      • RPA 9000 SoapI Test5 Управление
      • TestLink
  • SAP

      • Назад
      • ABAP 900 05
      • APO
      • Начинающий
      • Basis
      • BODS
      • BI
      • BPC
      • CO
      • Назад
      • CRM
      • Crystal Reports
      • QM
      • Crystal Reports
      • FICO
      • 9000 9000 9000 HRM

      • 9000 9000 HRM
      • 9000 Заработная плата

      • Назад
      • PI / PO
      • PP
      • SD
      • SAPUI5
      • Безопасность
      • Менеджер решений
      • Successfactors
      • Учебники SAP
    • 8
    • Apache

    • AngularJS
    • ASP.Net
    • C
    • C #
    • C ++
    • CodeIgniter
    • СУБД
    • JavaScript
    • Назад
    • Java
    • JSP
    • Kotlin
    • Linux
    • Linux
    • Kotlin
    • Linux
    • js

    • Perl
    • Назад
    • PHP
    • PL / SQL
    • PostgreSQL
    • Python
    • ReactJS
    • Ruby & Rails
    • Scala
    • SQL
    • SQL
    • UML
    • VB.Net
    • VBScript
    • Веб-службы
    • WPF
  • Обязательно учите!

      • Назад
      • Бухгалтерский учет
      • Алгоритмы
      • Android
      • Блокчейн
      • Business Analyst
      • Создание веб-сайта
      • CCNA
      • Облачные вычисления
      • COBOL 9000 9000 Compiler
          0005

        • 9000 Встроенные системы
        • Ethical Hacking
        • Учебные пособия по Excel
        • Программирование на Go
        • IoT
        • ITIL
        • Jenkins
        • MIS
        • Сетевые подключения
        • Операционная система
        • 000

        • 9000

        • Назад
        • Управление проектами Обзоры

        • Salesforce
        • SEO
        • Разработка программного обеспечения
        • VB A
    • Большие данные

        • Назад
        • AWS
        • BigData
        • Cassandra
        • Cognos
        • Хранилище данных
        • 0005

          HBOps

          HBOps

        • MicroStrategy
        • MongoDB

    ,

    руководств по Django — Настоящий Python

    1. Учебники
    2. Темы
    3. Учебники по Django

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

    Django — это высокоуровневый веб-фреймворк Python, который способствует быстрой разработке и чистому прагматичному дизайну. Веб-фреймворк — это набор компонентов, которые обеспечивают стандартный способ быстрой и простой разработки веб-сайтов. Основная цель Django — облегчить создание сложных веб-сайтов на базе баз данных. Некоторые известные сайты, использующие Django, включают PBS, Instagram, Disqus, Washington Times, Bitbucket и Mozilla.

    Что вы здесь найдете?

    Если вы новичок в Django, мы рекомендуем начать с курса Real Python, чтобы получить прочную основу в веб-разработке на Python. Учебники в этом разделе являются промежуточными и расширенными статьями, которые охватывают ключевые аспекты разработки Django, такие как:

    Тестирование приложений Django.

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

    REST API

    • Узнайте, как создавать RESTFul API с помощью Django Rest Framework (DRF), приложения, используемого для быстрого создания RESTful API на основе моделей Django.

    Лучшие практики

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

    Развертывание

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

    Кэширование

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

    ,

  • Leave a Comment

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