SlideShare une entreprise Scribd logo
1  sur  24
Télécharger pour lire hors ligne
WEB-ПРОГРАММИРОВАНИЕ
Лекция #6. Введение в Django web-framework
Яковенко К. С
Омский государственный университет им. Ф. М.Достоевского
Факультет компьютерных наук
2
Web-framework
— представляет собой программное обеспечение или
набор инструментов, которые предназначены для
упрощения поддержки, создания и развития
динамических веб-сайтов, веб-приложений, веб-
сервисов и веб-ресурсов.
Главная цель framework'а, предоставить программисту
удобную среду и структуру проекта с большим и хорошо
расширяемым функционалом.
Большинство современных web-framework'ов строятся на
основе архитектурного паттерна MVC.
3
MVC (Model-View-Controller)
(wikipedia) схема использования нескольких шаблонов
проектирования, с помощью которых модель данных
приложения, пользовательский интерфейс и
взаимодействие с пользователем разделены на три
отдельных компонента таким образом, чтобы
модификация одного из компонентов оказывала
минимальное воздействие на остальные.
Данная схема проектирования часто используется для
построения архитектурного каркаса, когда переходят
от теории к реализации в конкретной предметной
области.
4
Django
(wikipedia) бесплатный web-framework с открытым
исходным кодом, который написан на языке
программирования Python и придерживающийся
архитектурного паттерна MVC.
Официальный сайт: https://www.djangoproject.com/
Github: https://github.com/django/django
Лицензия: BSD
5
История развития Django
Создатели:
Адриан Головатый (Adrian Holovaty)
Саймон Уиллисон (Simon Willison)
Первый релиз состоялся осенью 2003 года,
использовался в новостных лентах online-газеты
Lawrence Journal-World.
В июле 2005 г. опубликован под BSD лицензией.
После этого момента новые релизы выходят
каждые 6-9 месяцев.
6
Стандартный функционал Django
Система конфигурирования URLs
Django ORM (Object-relational mapping)
Расширяемая система шаблонов
«Class-based views» – универсальные представления
Библиотека для работы с формами
Встроенный интерфейс администратора
Встроенная система кэширования
Интернационализация
+ многое другое
7
Основные принципы Django
Django стремится быть «питонической»
DRY (Don't Repeat Yourself)
Слабая зависимость и гибкость
Быстрая разработка
8
Общий обзор
архитектуры
Django
Веб-браузер
HTTP-клиент
JavaScript
Интернет
HTTPD/веб-серверЗапрос HTTP (POST, GET)
Промежуточная боработка запроса
Анализ URL urls.py
Промежуточная обработка представления
Универсальные, полууниверсальные
или собственные представления views.py
Пакет моделей models.py ORM
Python DB-API
Адаптер базы данных
Ответ HTTP
Промежуточная боработка ответа
Ответ
Пакет шаблонов
База данных (СУРБД)
DJANGO
9
Проект в Django
— представляет собой набор конфигурационных
файлов и приложений Django.
Проект может содержать множество приложений
Django.
Приложение Django — набор файлов, содержащих
описание моделей и представлений, которые
являются частью одно пакета Python и
представляют собой полное приложение.
Приложение может содержаться во множестве
проектов.
10
Создание и запуск Django проекта
Начать новый проект:
django-admin.py startproject example
Запустить локальный сервер:
python manage.py runserver
11
Минимальная структура проекта
Django
example/
example/
__init__.py
settings.py
urls.py
wsgi.py
manage.py
– каталог проекта
– пакет проекта
– настройки проекта
– конфигурация URL адресов
– точка входа для wsgi
– командная утилита Django
12
Создание Django приложений
python manage.py startapp blog
После создания нового Django приложения
необходимо зарегестрировать его в списке
приложений принадлежащих проекту.
settings.py:
INSTALLED_APPS = (
…
'example',
'blog'
)
13
Минимальная структура
Django приложения
blog/
__init__.py
admin.py
migrations/
__init__.py
forms.py
models.py
tests.py
views.py
– пакет приложения
– настройки панели администратора
– пакет содержаций миграций данных
(появился в django 1.7)
– описание форм ввода информации
(не создается по умолчанию)
– описание таблиц б.д.
– unit tests
– бизнес-логика приложения
14
Функция представления
— представляет собой Python функцию,
которая порождает содержимое страницы.
from django.http import HttpResponse
def hello(request):
return HttpResponse(“Hello world”)
django.http.HttpRequest
Всегда возвращает HttpResponse
15
Объекты запроса и ответа
(HttpRequest)
Класс HttpRequest представляет HTTP-запрос,
полученный со стороны клиента и содержит:
информацию об URL (path и д.р.),
HTTP-заголовки запроса (META),
информацию об отправленных данных (GET,
POST и FILES),
информацию о сессиях и cookies (session и
COOKIES),
прочие переменные сервера.
16
Объекты запроса и ответа
(HttpResponse)
— служит для конструирования ответа на запрос.
HttpResponse(content='', mimetype=None, status=200,
content_type=DEFAULT_CONTENT_TYPE)
Но если необходимо добавлять содержимое
постепенно, можно использовать объект response как
объект файла:
response = HttpResponse()
response.write("<p>Here's the text of the Web page.</p>")
response.write("<p>Here's another paragraph.</p>")
17
Подклассы HttpResponse
Модуль django.http содержит несколько подклассов
HttpResponse, представляющих различные виды
HTTP-ответов:
HttpResponseRedirect (302)
HttpResponseNotFound (404)
HttpResponseForbidden (403)
HttpResponseServerError (500)
и другие
18
Конфигурирование URLs
построенно на принципе слабой связности.
Каждая конфигурация должна храниться в
виде файла с програмным кодом на языке
Python, обычно с названием urls.py
Такие файлы должны определять объект
urlpatterns, получаемый в результате вызова
функции django.conf.patterns.
Путь к главному конфигуратору определяется
в settings.py переменной ROOT_URLCONF
19
Конфигурирование URLs (пример)
from django.conf.urls import patterns, include, url
from example.views import hello
urlpatterns = patterns('',
# Examples:
(r'^hello/', hello),
url(r'^$', 'example.views.home', name='home'),
url(r'^example/', include('example.blog.urls')),
)
20
Настройка представления
стандартных ошибок
Когда Django не может найти регулярное выражение,
соответствующее требуемому URL, или возникает
исключение, Django вызовет соответствующий
обработчик стандартных ошибок.
handler404 = 'django.views.defaults.page_not_found'
handler500 = 'django.views.defaults.server_error'
handler403 = 'django.views.defaults.permission_denied'
handler400 = 'django.views.defaults.bad_request'
Они могут быть переопределены только в главном
конфигураторе URL.
21
Система шаблонов Django
Шаблон в Django представляет собой строку
текста в специальном формате,
предназначенную для отделения представления
документа от его данных.
Язык шаблонов в Django не имеет никакого
отношения к Python и создан для веб-технологов
и дизайнеров интерфейсов.
22
Идеологические основы
Django шаблонов
Бизнес-логика должна быть отделена от логики
представления.
Синтаксис не должен быть привязан к HTML/XML.
Предполагается, что дизайнеры уверенно
владеют HTML.
Не предполагается, что дизайнеры умеют
программировать на Python.
Не ставилась задача изобрести новый язык
программирования.
23
Конфигурирование и загрузка
Django шаблонов
В Django предлагается удобный и мощный API для
загрузки шаблонов из файловой системы.
Сперва в settings.py нужно задать:
TEMPLATE_DIRS = (
"/путь/к/папке/содержащей/шаблоны",
)
После можно использовать:
from django.shortcuts import render_to_response
def hello(request):
return render_to_response(‘hello.html’)
24
Яковенко Кирилл Сергеевич
kirill.yakovenko@gmail.com
Омский государственный университет им. Ф. М. Достоевского
Факультет компьютерных наук

Contenu connexe

Tendances

C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.Igor Shkulipa
 
kranonit S15 Vladimir Melnik - Ruby on Rails, BDD
kranonit S15 Vladimir Melnik - Ruby on Rails, BDDkranonit S15 Vladimir Melnik - Ruby on Rails, BDD
kranonit S15 Vladimir Melnik - Ruby on Rails, BDDKrivoy Rog IT Community
 
C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.Igor Shkulipa
 
C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.Igor Shkulipa
 
JavaScript Базовый. Занятие 02.
JavaScript Базовый. Занятие 02.JavaScript Базовый. Занятие 02.
JavaScript Базовый. Занятие 02.Igor Shkulipa
 
Спецкурс 2014, занятие 4. Конфиги, сборка, автотесты
Спецкурс 2014, занятие 4. Конфиги, сборка, автотестыСпецкурс 2014, занятие 4. Конфиги, сборка, автотесты
Спецкурс 2014, занятие 4. Конфиги, сборка, автотесты7bits
 
JavaScript Базовый. Занятие 08.
JavaScript Базовый. Занятие 08.JavaScript Базовый. Занятие 08.
JavaScript Базовый. Занятие 08.Igor Shkulipa
 
Дополнительные приёмы работы в DOM
Дополнительные приёмы работы в DOMДополнительные приёмы работы в DOM
Дополнительные приёмы работы в DOMDenis Latushkin
 
Лекция #4. Каскадные таблицы стилей
Лекция #4. Каскадные таблицы стилейЛекция #4. Каскадные таблицы стилей
Лекция #4. Каскадные таблицы стилейЯковенко Кирилл
 
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...Viktor Likin
 
Отладка веб-приложений на Javascript
Отладка веб-приложений на JavascriptОтладка веб-приложений на Javascript
Отладка веб-приложений на JavascriptDenis Latushkin
 
C# Web. Занятие 12.
C# Web. Занятие 12.C# Web. Занятие 12.
C# Web. Занятие 12.Igor Shkulipa
 
JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.Igor Shkulipa
 
JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.Igor Shkulipa
 
C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.Igor Shkulipa
 
Презентация «Drupal и SEO» с московской DrupalConf 2011
Презентация «Drupal и SEO» с московской DrupalConf 2011Презентация «Drupal и SEO» с московской DrupalConf 2011
Презентация «Drupal и SEO» с московской DrupalConf 2011Alexey Kostin
 

Tendances (20)

C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.
 
kranonit S15 Vladimir Melnik - Ruby on Rails, BDD
kranonit S15 Vladimir Melnik - Ruby on Rails, BDDkranonit S15 Vladimir Melnik - Ruby on Rails, BDD
kranonit S15 Vladimir Melnik - Ruby on Rails, BDD
 
C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.
 
C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.
 
JavaScript Базовый. Занятие 02.
JavaScript Базовый. Занятие 02.JavaScript Базовый. Занятие 02.
JavaScript Базовый. Занятие 02.
 
Symfony 3
Symfony 3Symfony 3
Symfony 3
 
Zend Framework и Doctrine
Zend Framework и DoctrineZend Framework и Doctrine
Zend Framework и Doctrine
 
Спецкурс 2014, занятие 4. Конфиги, сборка, автотесты
Спецкурс 2014, занятие 4. Конфиги, сборка, автотестыСпецкурс 2014, занятие 4. Конфиги, сборка, автотесты
Спецкурс 2014, занятие 4. Конфиги, сборка, автотесты
 
Install denwer
Install denwerInstall denwer
Install denwer
 
JavaScript Базовый. Занятие 08.
JavaScript Базовый. Занятие 08.JavaScript Базовый. Занятие 08.
JavaScript Базовый. Занятие 08.
 
Дополнительные приёмы работы в DOM
Дополнительные приёмы работы в DOMДополнительные приёмы работы в DOM
Дополнительные приёмы работы в DOM
 
Лекция #4. Каскадные таблицы стилей
Лекция #4. Каскадные таблицы стилейЛекция #4. Каскадные таблицы стилей
Лекция #4. Каскадные таблицы стилей
 
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
 
Отладка веб-приложений на Javascript
Отладка веб-приложений на JavascriptОтладка веб-приложений на Javascript
Отладка веб-приложений на Javascript
 
C# Web. Занятие 12.
C# Web. Занятие 12.C# Web. Занятие 12.
C# Web. Занятие 12.
 
JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.
 
Base php 1
Base php 1Base php 1
Base php 1
 
JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.
 
C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.
 
Презентация «Drupal и SEO» с московской DrupalConf 2011
Презентация «Drupal и SEO» с московской DrupalConf 2011Презентация «Drupal и SEO» с московской DrupalConf 2011
Презентация «Drupal и SEO» с московской DrupalConf 2011
 

En vedette

Лекция #1. Основы Web-технологий
Лекция #1. Основы Web-технологийЛекция #1. Основы Web-технологий
Лекция #1. Основы Web-технологийЯковенко Кирилл
 
Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3Яковенко Кирилл
 
Лекция #2. Принцип организации World Wide Web
Лекция #2. Принцип организации World Wide WebЛекция #2. Принцип организации World Wide Web
Лекция #2. Принцип организации World Wide WebЯковенко Кирилл
 
Лекция #3. Введение в языки разметки web-страниц
Лекция #3. Введение в языки разметки web-страницЛекция #3. Введение в языки разметки web-страниц
Лекция #3. Введение в языки разметки web-страницЯковенко Кирилл
 
Тема 3. Комп'ютерна графіка
Тема 3. Комп'ютерна графікаТема 3. Комп'ютерна графіка
Тема 3. Комп'ютерна графікаgalanet82
 
Тема 4. Веб-технології
Тема 4. Веб-технологіїТема 4. Веб-технології
Тема 4. Веб-технологіїgalanet82
 
C++ classes tutorials
C++ classes tutorialsC++ classes tutorials
C++ classes tutorialsakreyi
 
Web-программирование и жизнь.
Web-программирование и жизнь.Web-программирование и жизнь.
Web-программирование и жизнь.Alex Mamonchik
 
C++ classes tutorials
C++ classes tutorialsC++ classes tutorials
C++ classes tutorialskailash454
 
Обобщенные классы в C#
Обобщенные классы в C#Обобщенные классы в C#
Обобщенные классы в C#REX-MDK
 
Фронтенд в Яндексе
Фронтенд в ЯндексеФронтенд в Яндексе
Фронтенд в ЯндексеYandex
 
Тестирование весна 2014 смешанное занятие 1
Тестирование весна 2014 смешанное занятие 1Тестирование весна 2014 смешанное занятие 1
Тестирование весна 2014 смешанное занятие 1Technopark
 
Дмитрий Исаев - Теория тестирования
Дмитрий Исаев - Теория тестированияДмитрий Исаев - Теория тестирования
Дмитрий Исаев - Теория тестированияYandex
 
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...Nikolay Grebenshikov
 
Программирование: от сложного к простому
Программирование: от сложного к простомуПрограммирование: от сложного к простому
Программирование: от сложного к простомуNikolay Grebenshikov
 
Introduction to the c programming language (amazing and easy book for beginners)
Introduction to the c programming language (amazing and easy book for beginners)Introduction to the c programming language (amazing and easy book for beginners)
Introduction to the c programming language (amazing and easy book for beginners)mujeeb memon
 
Java осень 2014 занятие 1
Java осень 2014 занятие 1Java осень 2014 занятие 1
Java осень 2014 занятие 1Technopark
 

En vedette (20)

Лекция #1. Основы Web-технологий
Лекция #1. Основы Web-технологийЛекция #1. Основы Web-технологий
Лекция #1. Основы Web-технологий
 
Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3
 
Лекция #2. Принцип организации World Wide Web
Лекция #2. Принцип организации World Wide WebЛекция #2. Принцип организации World Wide Web
Лекция #2. Принцип организации World Wide Web
 
Лекция #3. Введение в языки разметки web-страниц
Лекция #3. Введение в языки разметки web-страницЛекция #3. Введение в языки разметки web-страниц
Лекция #3. Введение в языки разметки web-страниц
 
Тема 3. Комп'ютерна графіка
Тема 3. Комп'ютерна графікаТема 3. Комп'ютерна графіка
Тема 3. Комп'ютерна графіка
 
Тема 4. Веб-технології
Тема 4. Веб-технологіїТема 4. Веб-технології
Тема 4. Веб-технології
 
Введение в Django
Введение в DjangoВведение в Django
Введение в Django
 
C++ classes tutorials
C++ classes tutorialsC++ classes tutorials
C++ classes tutorials
 
Web-программирование и жизнь.
Web-программирование и жизнь.Web-программирование и жизнь.
Web-программирование и жизнь.
 
C++ tutorials
C++ tutorialsC++ tutorials
C++ tutorials
 
C++ classes tutorials
C++ classes tutorialsC++ classes tutorials
C++ classes tutorials
 
Обобщенные классы в C#
Обобщенные классы в C#Обобщенные классы в C#
Обобщенные классы в C#
 
Фронтенд в Яндексе
Фронтенд в ЯндексеФронтенд в Яндексе
Фронтенд в Яндексе
 
Тестирование весна 2014 смешанное занятие 1
Тестирование весна 2014 смешанное занятие 1Тестирование весна 2014 смешанное занятие 1
Тестирование весна 2014 смешанное занятие 1
 
Дмитрий Исаев - Теория тестирования
Дмитрий Исаев - Теория тестированияДмитрий Исаев - Теория тестирования
Дмитрий Исаев - Теория тестирования
 
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
 
ФСПОиДП 14 лет
ФСПОиДП 14 летФСПОиДП 14 лет
ФСПОиДП 14 лет
 
Программирование: от сложного к простому
Программирование: от сложного к простомуПрограммирование: от сложного к простому
Программирование: от сложного к простому
 
Introduction to the c programming language (amazing and easy book for beginners)
Introduction to the c programming language (amazing and easy book for beginners)Introduction to the c programming language (amazing and easy book for beginners)
Introduction to the c programming language (amazing and easy book for beginners)
 
Java осень 2014 занятие 1
Java осень 2014 занятие 1Java осень 2014 занятие 1
Java осень 2014 занятие 1
 

Similaire à Лекция #6. Введение в Django web-framework

09 - Web-технологии. MVC фреймворки
09 - Web-технологии. MVC фреймворки09 - Web-технологии. MVC фреймворки
09 - Web-технологии. MVC фреймворкиRoman Brovko
 
Trening modul2-webinar11
Trening modul2-webinar11Trening modul2-webinar11
Trening modul2-webinar11olgaoov
 
C# Web. Занятие 16.
C# Web. Занятие 16.C# Web. Занятие 16.
C# Web. Занятие 16.Igor Shkulipa
 
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...Dev_Party
 
Практикум Web программирование
Практикум Web программированиеПрактикум Web программирование
Практикум Web программированиеRauan Ibraikhan
 
метод организации репозитория исходного кода
метод организации репозитория исходного кодаметод организации репозитория исходного кода
метод организации репозитория исходного кодаSergii Shmarkatiuk
 
Обзор Drupal 8 by Andrei Khalipau, Kostya Halipov and Егор Богатырёв
Обзор Drupal 8 by Andrei Khalipau, Kostya  Halipov and Егор БогатырёвОбзор Drupal 8 by Andrei Khalipau, Kostya  Halipov and Егор Богатырёв
Обзор Drupal 8 by Andrei Khalipau, Kostya Halipov and Егор БогатырёвMinsk PHP User Group
 
django cheBit'11
django cheBit'11django cheBit'11
django cheBit'11dva
 
Разработка web-приложений с repoze.bfg
Разработка web-приложений с repoze.bfgРазработка web-приложений с repoze.bfg
Разработка web-приложений с repoze.bfgAndrey Popp
 
Стандарты и соглашения в сложных ООП-приложениях
Стандарты и соглашения в сложных ООП-приложенияхСтандарты и соглашения в сложных ООП-приложениях
Стандарты и соглашения в сложных ООП-приложенияхMagecom Ukraine
 
Создаем Drupal дистрибутив: от идеи до сопровождения
Создаем Drupal дистрибутив: от идеи до сопровожденияСоздаем Drupal дистрибутив: от идеи до сопровождения
Создаем Drupal дистрибутив: от идеи до сопровожденияOvadiah Myrgorod
 
Share Point Workflow
Share Point WorkflowShare Point Workflow
Share Point WorkflowMaximKo
 
C# Web. Занятие 01.
C# Web. Занятие 01.C# Web. Занятие 01.
C# Web. Занятие 01.Igor Shkulipa
 
1С-Битрикс: Управление сайтом Версия .NET
1С-Битрикс: Управление сайтом Версия .NET1С-Битрикс: Управление сайтом Версия .NET
1С-Битрикс: Управление сайтом Версия .NETMedia Gorod
 
Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработкиIT-Доминанта
 
JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.Igor Shkulipa
 
Деплоймент и распространение обновлений для веб-приложений
Деплоймент и распространение обновлений для веб-приложенийДеплоймент и распространение обновлений для веб-приложений
Деплоймент и распространение обновлений для веб-приложенийMagecom Ukraine
 
Meet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis BosakMeet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis BosakAmasty
 
C# Web. Занятие 13.
C# Web. Занятие 13.C# Web. Занятие 13.
C# Web. Занятие 13.Igor Shkulipa
 

Similaire à Лекция #6. Введение в Django web-framework (20)

09 - Web-технологии. MVC фреймворки
09 - Web-технологии. MVC фреймворки09 - Web-технологии. MVC фреймворки
09 - Web-технологии. MVC фреймворки
 
Trening modul2-webinar11
Trening modul2-webinar11Trening modul2-webinar11
Trening modul2-webinar11
 
C# Web. Занятие 16.
C# Web. Занятие 16.C# Web. Занятие 16.
C# Web. Занятие 16.
 
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
 
Практикум Web программирование
Практикум Web программированиеПрактикум Web программирование
Практикум Web программирование
 
метод организации репозитория исходного кода
метод организации репозитория исходного кодаметод организации репозитория исходного кода
метод организации репозитория исходного кода
 
Обзор Drupal 8 by Andrei Khalipau, Kostya Halipov and Егор Богатырёв
Обзор Drupal 8 by Andrei Khalipau, Kostya  Halipov and Егор БогатырёвОбзор Drupal 8 by Andrei Khalipau, Kostya  Halipov and Егор Богатырёв
Обзор Drupal 8 by Andrei Khalipau, Kostya Halipov and Егор Богатырёв
 
Web application framework
Web application frameworkWeb application framework
Web application framework
 
django cheBit'11
django cheBit'11django cheBit'11
django cheBit'11
 
Разработка web-приложений с repoze.bfg
Разработка web-приложений с repoze.bfgРазработка web-приложений с repoze.bfg
Разработка web-приложений с repoze.bfg
 
Стандарты и соглашения в сложных ООП-приложениях
Стандарты и соглашения в сложных ООП-приложенияхСтандарты и соглашения в сложных ООП-приложениях
Стандарты и соглашения в сложных ООП-приложениях
 
Создаем Drupal дистрибутив: от идеи до сопровождения
Создаем Drupal дистрибутив: от идеи до сопровожденияСоздаем Drupal дистрибутив: от идеи до сопровождения
Создаем Drupal дистрибутив: от идеи до сопровождения
 
Share Point Workflow
Share Point WorkflowShare Point Workflow
Share Point Workflow
 
C# Web. Занятие 01.
C# Web. Занятие 01.C# Web. Занятие 01.
C# Web. Занятие 01.
 
1С-Битрикс: Управление сайтом Версия .NET
1С-Битрикс: Управление сайтом Версия .NET1С-Битрикс: Управление сайтом Версия .NET
1С-Битрикс: Управление сайтом Версия .NET
 
Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработки
 
JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.
 
Деплоймент и распространение обновлений для веб-приложений
Деплоймент и распространение обновлений для веб-приложенийДеплоймент и распространение обновлений для веб-приложений
Деплоймент и распространение обновлений для веб-приложений
 
Meet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis BosakMeet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis Bosak
 
C# Web. Занятие 13.
C# Web. Занятие 13.C# Web. Занятие 13.
C# Web. Занятие 13.
 

Лекция #6. Введение в Django web-framework

  • 1. WEB-ПРОГРАММИРОВАНИЕ Лекция #6. Введение в Django web-framework Яковенко К. С Омский государственный университет им. Ф. М.Достоевского Факультет компьютерных наук
  • 2. 2 Web-framework — представляет собой программное обеспечение или набор инструментов, которые предназначены для упрощения поддержки, создания и развития динамических веб-сайтов, веб-приложений, веб- сервисов и веб-ресурсов. Главная цель framework'а, предоставить программисту удобную среду и структуру проекта с большим и хорошо расширяемым функционалом. Большинство современных web-framework'ов строятся на основе архитектурного паттерна MVC.
  • 3. 3 MVC (Model-View-Controller) (wikipedia) схема использования нескольких шаблонов проектирования, с помощью которых модель данных приложения, пользовательский интерфейс и взаимодействие с пользователем разделены на три отдельных компонента таким образом, чтобы модификация одного из компонентов оказывала минимальное воздействие на остальные. Данная схема проектирования часто используется для построения архитектурного каркаса, когда переходят от теории к реализации в конкретной предметной области.
  • 4. 4 Django (wikipedia) бесплатный web-framework с открытым исходным кодом, который написан на языке программирования Python и придерживающийся архитектурного паттерна MVC. Официальный сайт: https://www.djangoproject.com/ Github: https://github.com/django/django Лицензия: BSD
  • 5. 5 История развития Django Создатели: Адриан Головатый (Adrian Holovaty) Саймон Уиллисон (Simon Willison) Первый релиз состоялся осенью 2003 года, использовался в новостных лентах online-газеты Lawrence Journal-World. В июле 2005 г. опубликован под BSD лицензией. После этого момента новые релизы выходят каждые 6-9 месяцев.
  • 6. 6 Стандартный функционал Django Система конфигурирования URLs Django ORM (Object-relational mapping) Расширяемая система шаблонов «Class-based views» – универсальные представления Библиотека для работы с формами Встроенный интерфейс администратора Встроенная система кэширования Интернационализация + многое другое
  • 7. 7 Основные принципы Django Django стремится быть «питонической» DRY (Don't Repeat Yourself) Слабая зависимость и гибкость Быстрая разработка
  • 8. 8 Общий обзор архитектуры Django Веб-браузер HTTP-клиент JavaScript Интернет HTTPD/веб-серверЗапрос HTTP (POST, GET) Промежуточная боработка запроса Анализ URL urls.py Промежуточная обработка представления Универсальные, полууниверсальные или собственные представления views.py Пакет моделей models.py ORM Python DB-API Адаптер базы данных Ответ HTTP Промежуточная боработка ответа Ответ Пакет шаблонов База данных (СУРБД) DJANGO
  • 9. 9 Проект в Django — представляет собой набор конфигурационных файлов и приложений Django. Проект может содержать множество приложений Django. Приложение Django — набор файлов, содержащих описание моделей и представлений, которые являются частью одно пакета Python и представляют собой полное приложение. Приложение может содержаться во множестве проектов.
  • 10. 10 Создание и запуск Django проекта Начать новый проект: django-admin.py startproject example Запустить локальный сервер: python manage.py runserver
  • 11. 11 Минимальная структура проекта Django example/ example/ __init__.py settings.py urls.py wsgi.py manage.py – каталог проекта – пакет проекта – настройки проекта – конфигурация URL адресов – точка входа для wsgi – командная утилита Django
  • 12. 12 Создание Django приложений python manage.py startapp blog После создания нового Django приложения необходимо зарегестрировать его в списке приложений принадлежащих проекту. settings.py: INSTALLED_APPS = ( … 'example', 'blog' )
  • 13. 13 Минимальная структура Django приложения blog/ __init__.py admin.py migrations/ __init__.py forms.py models.py tests.py views.py – пакет приложения – настройки панели администратора – пакет содержаций миграций данных (появился в django 1.7) – описание форм ввода информации (не создается по умолчанию) – описание таблиц б.д. – unit tests – бизнес-логика приложения
  • 14. 14 Функция представления — представляет собой Python функцию, которая порождает содержимое страницы. from django.http import HttpResponse def hello(request): return HttpResponse(“Hello world”) django.http.HttpRequest Всегда возвращает HttpResponse
  • 15. 15 Объекты запроса и ответа (HttpRequest) Класс HttpRequest представляет HTTP-запрос, полученный со стороны клиента и содержит: информацию об URL (path и д.р.), HTTP-заголовки запроса (META), информацию об отправленных данных (GET, POST и FILES), информацию о сессиях и cookies (session и COOKIES), прочие переменные сервера.
  • 16. 16 Объекты запроса и ответа (HttpResponse) — служит для конструирования ответа на запрос. HttpResponse(content='', mimetype=None, status=200, content_type=DEFAULT_CONTENT_TYPE) Но если необходимо добавлять содержимое постепенно, можно использовать объект response как объект файла: response = HttpResponse() response.write("<p>Here's the text of the Web page.</p>") response.write("<p>Here's another paragraph.</p>")
  • 17. 17 Подклассы HttpResponse Модуль django.http содержит несколько подклассов HttpResponse, представляющих различные виды HTTP-ответов: HttpResponseRedirect (302) HttpResponseNotFound (404) HttpResponseForbidden (403) HttpResponseServerError (500) и другие
  • 18. 18 Конфигурирование URLs построенно на принципе слабой связности. Каждая конфигурация должна храниться в виде файла с програмным кодом на языке Python, обычно с названием urls.py Такие файлы должны определять объект urlpatterns, получаемый в результате вызова функции django.conf.patterns. Путь к главному конфигуратору определяется в settings.py переменной ROOT_URLCONF
  • 19. 19 Конфигурирование URLs (пример) from django.conf.urls import patterns, include, url from example.views import hello urlpatterns = patterns('', # Examples: (r'^hello/', hello), url(r'^$', 'example.views.home', name='home'), url(r'^example/', include('example.blog.urls')), )
  • 20. 20 Настройка представления стандартных ошибок Когда Django не может найти регулярное выражение, соответствующее требуемому URL, или возникает исключение, Django вызовет соответствующий обработчик стандартных ошибок. handler404 = 'django.views.defaults.page_not_found' handler500 = 'django.views.defaults.server_error' handler403 = 'django.views.defaults.permission_denied' handler400 = 'django.views.defaults.bad_request' Они могут быть переопределены только в главном конфигураторе URL.
  • 21. 21 Система шаблонов Django Шаблон в Django представляет собой строку текста в специальном формате, предназначенную для отделения представления документа от его данных. Язык шаблонов в Django не имеет никакого отношения к Python и создан для веб-технологов и дизайнеров интерфейсов.
  • 22. 22 Идеологические основы Django шаблонов Бизнес-логика должна быть отделена от логики представления. Синтаксис не должен быть привязан к HTML/XML. Предполагается, что дизайнеры уверенно владеют HTML. Не предполагается, что дизайнеры умеют программировать на Python. Не ставилась задача изобрести новый язык программирования.
  • 23. 23 Конфигурирование и загрузка Django шаблонов В Django предлагается удобный и мощный API для загрузки шаблонов из файловой системы. Сперва в settings.py нужно задать: TEMPLATE_DIRS = ( "/путь/к/папке/содержащей/шаблоны", ) После можно использовать: from django.shortcuts import render_to_response def hello(request): return render_to_response(‘hello.html’)
  • 24. 24 Яковенко Кирилл Сергеевич kirill.yakovenko@gmail.com Омский государственный университет им. Ф. М. Достоевского Факультет компьютерных наук