Лекция по Джанго. Лекция 2 Основные понятия Django (1). Основные понятия Django. Вывод данных
Скачать 48.17 Kb.
|
Python Установка python В Google вбить python , затем с официального сайта установить последнюю версию PYTHON, например, 3.7.3. Официальный сайт Welcome, нажать Downloads, сохранить файл, потом запустить его. Во 2-м окне пометить птичку Add python 3.7 to path, нажать Install Now. После установки можно запустить python из меню Пуск, или вытащить ярлык на рабочий стол. После запуска откроется окно с командной строкой. Установка Visual Studio Code Чтобы работать с python в какой-нибудь среде, нужно установить например Visual Studio Code. В Google вбить Visual Code, выбрать Visual Studio Code- Code Editing. Redefined. Далее нажать Download for Windows. Подождать, выйдет окно сохранить файл, сохранить. Далее запустить его, далее, я принимаю соглашения, далее, далее, далее, пометить галочкой создать значок на рабочем столе и далее, установить, завершить. Настройки После установки нужно открыть окно Visual Studio Code, в левой части панель инструментов, выбрать Extension, вверху в окне поиска набрать python, нужно установить Python for VSCode, python Extension Pack. Далее выбрать значок Explorer, нажать Open Folder, выбрать папку (предварительно ее создав). Зайти в настройки командой File-Preferences-Settings. В окне поиска ввести theme, далее где подпись Work bench: Color Theme, поменять цвет, можно выбрать Visual Studio Light(светлый). Далее можно настроить Emmet, для этого в окне поиска вместо theme набираем Emmet. Чтобы включить клавишу Tab нужно в самом низу пометить галочку: Emmet Trigger Expansion On Tab. Создание файла. Далее можно создать файл командой File- New- File, набрать программу и сохранить файл командой File-Save, дать имя файлу, например main.py, py – расширение программ на python. Затем можно запускать на выполнение. Показать командную строку командой CTRL-Ё. Основные понятия Django. Вывод данных Язык программирования Python исключительно развит сам по себе, но основную мощь ему придают всевозможные дополнительные библиотеки, которых существует превеликое множество. Есть библиотеки для научных расчетов, систем машинного зрения, программирования игр, обычных «настольных» приложений и, разумеется, веб-сайтов. Среди последних особняком стоит ряд библиотек, реализующих большую часть функциональности сайта. Эти библиотеки самостоятельно взаимодействуют с базами данных, обрабатывают клиентские запросы и формируют ответы, реализуют разграничение доступа, пуская к закрытым разделам сайта лишь тех посетителей, что перечислены в· особом списке, и даже рассылают электронные письма. Разработчику остается только написать код, который генерирует веб-страницы сайта на основе данных, извлеченных из базы. И задача эта несравнимо менее трудоемкая, чем написание всей функциональности сайта, что называется, с нуля. Такая всеобъемлющая библиотека напоминает готовый каркас (по-английски frаmеwоrk), на который разработчик конкретного сайта «навешивает>> свои узлы, механизмы и детали декора. Именно поэтому библиотеки подобного рода носят название веб-фреймворков, или просто фреймворков. Один из фреймворков, написанных на языке Python, - Django. Среди всех такого рода разработок его стоит выделить особо. Хотя бы потому, что он, как было отмечено ранее, невероятно популярен. Более того, это наиболее часто применяемый на практике веб-фреймворк, разработанный на Python. И тому есть ряд причин. [] Django - это следование современным стандартам веб-разработки. В их числе: архитектура «модель-контроллер-шаблон», использование миграций для внесения изменений в базу данных и принцип «написанное однажды применяется везде)). [] Django - это полнофункциональный фреймворк. Для разработки среднестатистического сайта вам достаточно установить только его. Никаких дополнительных библиотек, необходимых, чтобы ваше веб-творение хотя бы заработало, ставить не придется. [] Django - это высокоуровневый фреймворк. Типовые задачи, наподобие соединения с базой данных, обработки данных, полученных от пользователя, сохранения выгруженных пользователем файлов, он выполняет самостоятельно. А еще он предоставляет полнофункциональную подсистему разграничения доступа и исключительно мощный и удобно настраиваемый административный веб-сайт, которые, в случае применения любого другого фреймворка, нам пришлось бы писать самостоятельно. [] Django - это удобство разработки. Легкий и быстрый отладочный веб-сервер, развитый механизм миграций, уже упомянутый административный веб-сайт - все это существенно упрощает программирование. [] Django - это дополнительные библиотеки. Нужен вывод графических миниатюр? Требуется обеспечить аутентификацию посредством социальных сетей? Необходима поддержка САРТСНА? Для всего этого существуют библиотеки, которые нужно только установить. [] Django - это Python. Исключительно мощный и, вероятно, самый лаконичный язык из всех, что применяются в промышленном программировании. Установка фреймворка Начиная с версии Python 3.4, в составе исполняющей среды этого языка поставляется утилита pip, с помощью которой очень удобно выполнять установку любых дополнительных библиотек. Эта утилита самостоятельно ищет указанную при ее запуске библиотеку в штатном репозитории PyPI (Python Package Index, реестр пакетов Python) - интернет-хранилище самых разных библиотек для Python. Найдя запрошенную библиотеку, pip самостоятельно загружает и устанавливает наиболее подходящую ее редакцию, при этом загружая и устанавливая также и все библиотеки, которые она использует для работы. Создать папку, например Python, внутри создать папку для проекта, например Demo. Далее в этой папке будут создаваться подприложения. Далее все команды выполняются внутри python>Demo. Для этого в среде vscode выполним команду File-Open Folder и выберем нужную папку. Понятие виртуального окружения. Виртуальное окружение - это изолированное окружение среды (в нашем случае это окружение Python), которое позволяет нам использовать определенные версии приложений. Предположим, сейчас ты работаешь над несколькими проектами одновременно, и для каждого из них по тем или иным причинам есть свои определенные особенности версий пакетов. Например, на одном проекте у тебя Джанга 1.10, на втором - 1.8 , а на третьем - 1.5, да и в придачу Питон 2-й версии. При этом версии приложений менять ну никак нельзя - придется много чего переделывать да и вообще. Вот для таких ситуаций нам как раз и пригодится виртуальное окружение, позволяющее использовать разные версии приложений. Все пакеты, работающие с виртуальным окружением решают одну проблему - они позволяют проектам, которые имеют различные (и часто конфликтующие) зависимости, сосуществовать на одной системе. Создание окружения. Перейти во Visual Studio Code, перейти в папку проекта. перейти в командную строку командой CTRL-Ë. Набрать команду python –m venv env, env- имя окружения. Перейти в окружение командой: env\Scripts\activate ORM и работа с базой данных Django — свободный фреймворк для веб-приложений на языке Python, использующий шаблон проектирования MVC. Приложение построено с применением архитектурной модели MVC (MTV в случае использования Django framework) со следующей схемой разделения данных приложения: Модель (Model) предоставляет данные и реагирует на команды контроллера, изменяя своё состояние Template (View) отвечает за отображение данных модели пользователю, реагируя на изменения модели View (Controller) интерпретирует действия пользователя, оповещая модель о необходимости изменений Проект поддерживается организацией Django Software Foundation. Сайт на Django строится из одного или нескольких приложений, которые рекомендуется делать отчуждаемыми и подключаемыми. Это одно из существенных архитектурных отличий этого фреймворка от некоторых других. Использование нескольких приложений позволяет разделять модели и представления, чтобы повышает удобство работы и читаемость кода. Также, в отличие от других фреймворков, обработчики URL в Django конфигурируются явно при помощи регулярных выражений. Для работы с базой данных Django использует собственный ORM, в котором модель данных описывается классами Python, и по ней генерируется схема базы данных. ORM (Object-Relational Mapping) - технология программирования, которая связывает базы данных с концепциями объектно-ориентированных языков программирования, создавая «виртуальную объектную базу данных». Фреймворк Django как все современные фреймворки предоставляет ORM. ORM позволяет создавать таблицы и устанавливать между ними связи использую классы языка Python. Эти классы называются моделями. ORM Django предоставляет API, позволяющий выполнять операции чтения, изменения и создания записей путем вызова соответствующих методов модели без применения SQL запросов, все запросы к БД генерируются в автоматическом режиме. Использование Веб-фреймворк Django используется в таких крупных и известных сайтах, как Instagram, Disqus, Mozilla, The Washington Times, Pinterest, YouTube, Google и др. Также Django используется в качестве веб-компонента в различных проектах, таких как Graphite — система построения графиков и наблюдения, FreeNAS — свободная реализация системы хранения и обмена файлами и др. Разработчики Расселл Кейт-Маги (англ. RussellKeith-Magee) Адриан Головатый (англ. AdrianHolovaty), Саймон Виллисон (англ. Simon Willison), Джейкоб Каплан-Мосс (англ. JacobKaplan-Moss), Уилсон Майнер (англ. Wilson Miner) Разработчики заявляют, что не обязуются строго придерживаться какой бы то ни было методологии в развитии проекта, предпочитая делать то, что кажется им наиболее логичным. Запустим командную строку и отдадим в ней команду на установку Django, которая вполне понята безо всяких комментариев: pip install django Помимо Django, эта команда установит также библиотеку pytz, выполняющую обработку значений даты и времени с учетом временных зон и используемую упомянутым ранее фреймворком в работе. Не удаляйте эту библиотеку! Спустя некоторое время фреймворк будет установлен, о чем pip нам обязательно сообщит Successfully installed django-2.1.3 pytz-2018.7 Также установим анализатор кода командой pip install pylint-django Теперь мы можем начинать разработку нашего первого веб-сайта. Проект Django Следующее, что нам нужно сделать, - создать новый проект. Проектом называется совокупность всего программного кода, составляющего разрабатываемый сайт. Можно даже сказать, что проект - это и есть наш сайт. Физически он представляет собой папку, в которой находятся разнообразные файлы с исходным кодом и другие папки (назовем ее папкой проекта). Давайте же создадим новый, пока еще пустой проект Django, которому дадим имя demo. Для этого в запущенной ранее командной строке перейдем в папку, в которой должна находиться папка проекта, и отдадим команду: django-admin startproject demo Утилита django-admin служит для выполнения разнообразных административных задач. В частности, команда startproject указывает ей создать новый проект с именем, записанным после этой команды. Автоматически подключатся нужные методы, например, render. Виртуальное окружение привязывается к абсолютному пути, т.е. если приложение переносить на другой компьютер, нужно создать те же папки. Чтобы каждый раз при переносе проекта не устанавливать библиотеки нужно выполнить следующие действия: (env)>python>webapp>pip freeze enter Выходит список всех зависимостей. Нужно выполнить команду: pip freeze>requirements.txt enter В корне появится файл requirements.txt. Нужно его скопировать. Создать другой проект, например primer, создать окружение и выполнить команду: (env)primer>pip install –r requirement.txt И уже не надо устанавливать никаких библиотек. В папке, в которую мы ранее перешли, будет создана следующая структура файлов и папок: demo env manage.py demo _init_.py settings.py urls.py wsgi.py «Внешняя>> папка demo - это, как нетрудно догадаться, и есть папка проекта. Как видим, ее имя совпадает с именем проекта, записанным в вызове утилиты django-admin. А содержимое этой папки таково: env- виртуальное окружение manage.py - программный файл с кодом одноименной утилиты, с использованием которой производятся действия над самим проектом. «внутренняя» папка demo - формирует пакет языка Python, содержащий модули, которые относятся к проекту целиком и задают его конфигурацию (в частности, ключевые настройки). Название этого пакета совпадает с названием проекта и менять его не стоит - в противном случае придется вносить в код обширные правки. В документации по Django этот пакет не имеет какого-либо ясного и однозначного названия. Поэтому, чтобы избежать путаницы, давайте назовем его пакетом конфигурации. Пакет конфигурации включает в себя такие модули: _init_.py - пустой файл, сообщающий Python, что папка, в которой он находится, является полноценным пакетом; • settings.py - модуль с настройками самого проекта. Включает описание конфигурации базы данных проекта, пути ключевых папок, важные параметры, связанные с безопасностью, и пр.; • urls.ру-модуль с маршрутами уровня проекта; • wsgi.py - модуль, связывающий проект с веб-сервером. Пакет конфигурации хранит настройки, относящиеся к самому проекту и влияющие на все приложения, что входят в состав этого проекта. Проект Django мы можем поместить в любое место файловой системы компьютера. Мы также можем переименовать папку проекта. В результате всего этого проект не потеряет своей работоспособности. Настройки проекта На работу проекта Django значительное влияние оказывают многочисленные настройки, указываемые в модуле settings.py пакета конфигурации. Впрочем, большая их часть имеет значения по умолчанию, которые являются оптимальными в большинстве случаев. Все эти параметры хранятся в переменных. Имя переменной - и есть имя соответствующего ей параметра. Основные настройки Здесь приведены основные настройки, затрагивающие ключевую функциональность проекта: [] BASE DIR - задает путь к папке проекта. По умолчанию этот путь вычисляется автоматически; [] DEBUG - указывает режим работы сайта: отладочный (значение True) или эксплуатационный (False). Значение по умолчанию- False (эксплуатационный режим), однако сразу при создании проекта для этого параметра указано значение тrue (т. е. сайт для облегчения разработки сразу же вводится в отладочный режим). Если сайт работает в отладочном режиме, при возникновении любой ошибки в коде сайта Django выводит веб-страницу с детальным описанием этой ошибки и сведениями, позволяющими понять ее причину. ALLOWED_HOSTS = [] – массив тех адресов, которые могут подключаться к серверу. * -подключение с любого адреса. [] ROOT URLCONF - путь к модулю, в котором записаны маршруты уровня проекта, в виде строки. Значение этого параметра указывается сразу при создании проекта; [] SECRET КЕУ - секретный ключ, представляющий собой строку с произвольным набором символов. Активно используется программным ядром Django и подсистемой разграничения доступа для шифрования важных данных. Значение параметра по умолчанию - пустая строка. Однако непосредственно при создании проекта ему присваивается секретный ключ, сгенерированный утилитой django-admin. Менять этот секретный ключ без особой необходимости не стоит. Также его следует хранить в тайне, в противном случае он может попасть в руки злоумышленникам, которые используют его для атаки на сайт. Параметры баз данных Все базы данных, используемые проектом, записываются в параметре DATAВASES. Его значением должен быть словарь Python. Ключи элементов этого словаря задают псевдонимы баз данных, зарегистрированных в проекте. Можно указать произвольное количество баз данных. База с псевдонимом default будет использоваться, если при выполнении операций с моделями база данных не указана явно. В качестве значений элементов словаря также указываются словари, хранящие, собственно, параметры соответствующей базы данных. Каждый элемент вложенного словаря указывает отдельный параметр. Значение параметра DATAВASES по умолчанию - пустой словарь. Однако при создании проекта ему дается следующее значение: DATAВASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NАМЕ': os.path.join(BASE_DIR, 'db.sqliteЗ'), } } Оно указывает единственную базу данных, применяемую по умолчанию. База записывается в формате SQLite и хранится в файле db.sqlite3, что находится в папке проекта. Теперь поговорим о параметрах баз данных, поддерживаемых Django: [] ENGINE- формат используемой базы данных. Указывается как путь к модулю, реализующему работу с нужным форматом данных. Доступны следующие значения • django.db.backends.sqlite3- SQLite; • django.db.backends.mysql-MySQL; • django.db.backends .postgresql - PostgreSQL; • django. db. backends. oracle - Oracle; [] NАМЕ - пуrъ к файлу базы данных, если используется SQLite, или имя базы данных в случае серверных СУБД; [] ТIМЕ ZONE - временная зона для значений даты и времени, хранящихся в базе. Используется в том случае, если формат базы данных не поддерживает хранение значений даты и времени с указанием временной зоны. Значение по умолчанию - Nоnе (значение временной зоны берется из одноименного параметра проекта. Следующие параметры используются только в случае серверных СУБД: [] HOST - интернет-адрес компьютера, на котором работает СУБД; [] PORT - номер ТСР-порта, через который выполняется подключение к СУБД. Значение по умолчанию - пустая строка (используется порт по умолчанию); [] USER - имя пользователя, от имени которого Django подключается к базе данных; [] PASSWORD - пароль пользователя, от имени которого Django подключается к базе; [] CONN _МАХ_ АGЕ - время, в течение которого соединение с базой данных будет открыто, в виде целого числа в секундах. Если задано значение 0, соединение будет закрываться сразу после обработки запроса. Если задано значение None, соединение будет открыто всегда. Значение по умолчанию - 0; [] OPТIONS - дополнительные параметры подключения к базе данных, специфичные для используемой СУБД. Записываются в виде словаря, в котором каждый элемент указывает отдельный параметр. Значение по умолчанию - пустой словарь. Вот пример кода, задающего параметры для подключения к базе данных site формата MySQL, обслуживаемой СУБД, которая работает на том же компьютере, пользователя под именем siteuser с паролем sitepassword: DATAВASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'HOST': 'localhost', 'USER': 'siteuser', 'PASSWORD': 'sitepassword', 'NАМЕ': 'site' } } Для базы данных MS SQL Server DATABASES = { 'default': { 'ENGINE': 'sql_server.pyodbc', 'NAME': 'sclad2_db', 'HOST': 'localhost', 'USER': 'barsik', 'PASSWORD': 'zimba123', 'OPTIONS': { 'driver': 'ODBC Driver 11 for SQL Server', } } } Здесь 'driver': 'ODBC Driver 11 for SQL Server', - драйвер для подключения к базе MS Sql сервер. Список зарегистрированных приложений Список приложений, зарегистрированных в проекте, задается параметром INSTALLED APPS. Все приложения, составляющие проект - как написанные самим разработчиком сайта, так и входящие в состав Django, - должны быть приведены в этом списке, в противном случае они не будут работать. Значение этого параметра по умолчанию - пустой список. Однако сразу при создании проекта для него указывается следующий список: INSTALLED _ APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', Он содержит такие стандартные приложения: django. contrib. admin - реализует функциональность административного вебсайта Django; django.contrib.auth- реализует работу встроенной во фреймворк подсистемы разграничения доступа. Используется административным сайтом (приложением django. contrib. admin); django.contrib.contenttypes - хранит список всех моделей, объявленных во всех приложениях сайта. Используется при создании полиморфных связей между моделями, административным сайтом, подсистемой разграничения доступа (приложениями django.contrib.admin и django.contrib.auth); django. contrib. sessions - обеспечивает хранение данных клиента на стороне сервера в сессиях. Требуется при задействовании сессий и используется административным сайтом (приложением django. contrib. admin); django.contrib.messages - выводит всплывающие сообщения. Требуется для обработки всплывающих сообщений и используется административным сайтом (приложением django.contrib.admin); django. contrib. staticfiles - реализует обработку статических файлов. Необходимо, если в составе сайта имеются статические файлы. Если какое-либо из указанных приложений не нужно для работы сайта, его можно удалить из списка. Список зарегистрированных посредников Посредник (middleware) Django- это программный модуль, выполняющий предварительную обработку клиентского запроса перед передачей его контроллеру, а также окончательную обработку ответа, сгенерированного контроллером. Список посредников, зарегистрированных в проекте, указывается в параметре MIDDLEWARE. Все посредники, используемые приложениями проекта - как написанные самим разработчиком сайта, так и входящие в состав Django, - должны быть приведены в этом списке. В противном случае они не будут работать. Значение параметра MIDDLEWARE по умолчанию - пустой список. Однако сразу при создании проекта для него указывается следующий список: MIDDLEWARE = [ 'django.rniddleware.security.SecurityMiddleware', 'django.contrib.sessions.rniddleware.SessionМiddleware', 'django.rniddleware.cornrnon.CornrnonМiddleware', 'django.rniddleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.rniddl.eware.AuthenticationМiddleware', 'django.contrib.rnessages.rniddleware.MessageMiddleware', 'django.rniddleware.clickjacking.XFrarneOptionsMiddleware', Все эти посредники входят в состав фреймворка: Давайте их рассмотрим: django.rniddleware.security.SecurityMiddleware реализует дополнительную защиту сайта от сетевых атак; django.contrib.sessions.rniddleware.SessionMiddleware - обеспечивает работу сессий на низком уровне. Используется подсистемами разграничения доступа, сессий и всплывающих сообщений (приложения django.contrib.auth, django. contrib. sessions и django. contrib .messages); django .middleware. common. CommonМiddleware - участвует в предварительной обработке запросов; django.middleware. csrf .CsrfViewMiddleware - осуществляет защиту от межсайтовых запросов при обработке данных, переданных сайту НТТР-методом POST; django.contrib. auth.rniddleware.AuthenticationMiddleware - добавляет в объект запроса атрибут, хранящий текущего пользователя. Через этот атрибут в контроллерах и шаблонах можно выяснить, какой пользователь выполнил вход на сайт и выполнил ли вообще. Используется административным сайтом и подсистемой разграничения доступа (приложениями django.contrib.adrnin и django.contrib. auth); django. contrib .messages .middleware. MessageMiddleware - обеспечивает обработку всплывающих сообщений на низком уровне. Используется административным сайтом и подсистемой всплывающих сообщений. (приложениями django.contrib.admin и django.contrib.messages). django .middleware. clickjacking. XFrameOptionsMiddleware - реализует дополнительную защиту сайта от сетевых атак. Если какой-либо из этих посредников не используется ни одним из приложений сайта, его можно удалить из списка. Исключение составляют посредникн django.middleware.security.SecurityМiddleware, django.middleware.common. CommonМiddleware, django.middleware.clickjacking.XFrameOptionsMiddleware и, если сайт получает данные от посетиrелей, django .middleware. csrf. CsrtViewМiddleware - их удалять не стоит. Языковые настройки. LANGUAGE_CODE = 'en-us' TIME_ZONE = 'UTC' USE_I18N = True USE_L10N = True USE_TZ = True Отладочный веб-сервер В процессе разработки сайта нам придется неоднократно открывать его в вебобозревателе для тестирования. Если бы мы использовали другую фундаментальную программную платформу, например РНР, и другой фреймворк, такой как Yii или Laravel, - нам пришлось бы устанавливать на свой компьютер программу вебсервера. Но в случае с Django делать этого не нужно - в состав Django входит отладочный веб-сервер, написанный на самом языке Python, не требующий сложной настройки и всегда готовый к работе. Чтобы запустить его, следует в командной строке перейти непосредственно в папку проекта и отдать команду: :python manage.py runserver |