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

4,845 views

Published on

Web-программирование
Лекция #6. Введение в Django web-framework

Цикл лекций читается в Омском государственном университете им. Ф.М.Достоевского на факультете компьютерных наук.
Лектор: Яковенко Кирилл Сергеевич.

Published in: Education
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,845
On SlideShare
0
From Embeds
0
Number of Embeds
16
Actions
Shares
0
Downloads
125
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

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

  1. 1. WEB-ПРОГРАММИРОВАНИЕ Лекция #6. Введение в Django web-framework Яковенко К. С Омский государственный университет им. Ф. М.Достоевского Факультет компьютерных наук
  2. 2. 2 Web-framework — представляет собой программное обеспечение или набор инструментов, которые предназначены для упрощения поддержки, создания и развития динамических веб-сайтов, веб-приложений, веб- сервисов и веб-ресурсов. Главная цель framework'а, предоставить программисту удобную среду и структуру проекта с большим и хорошо расширяемым функционалом. Большинство современных web-framework'ов строятся на основе архитектурного паттерна MVC.
  3. 3. 3 MVC (Model-View-Controller) (wikipedia) схема использования нескольких шаблонов проектирования, с помощью которых модель данных приложения, пользовательский интерфейс и взаимодействие с пользователем разделены на три отдельных компонента таким образом, чтобы модификация одного из компонентов оказывала минимальное воздействие на остальные. Данная схема проектирования часто используется для построения архитектурного каркаса, когда переходят от теории к реализации в конкретной предметной области.
  4. 4. 4 Django (wikipedia) бесплатный web-framework с открытым исходным кодом, который написан на языке программирования Python и придерживающийся архитектурного паттерна MVC. Официальный сайт: https://www.djangoproject.com/ Github: https://github.com/django/django Лицензия: BSD
  5. 5. 5 История развития Django Создатели: Адриан Головатый (Adrian Holovaty) Саймон Уиллисон (Simon Willison) Первый релиз состоялся осенью 2003 года, использовался в новостных лентах online-газеты Lawrence Journal-World. В июле 2005 г. опубликован под BSD лицензией. После этого момента новые релизы выходят каждые 6-9 месяцев.
  6. 6. 6 Стандартный функционал Django Система конфигурирования URLs Django ORM (Object-relational mapping) Расширяемая система шаблонов «Class-based views» – универсальные представления Библиотека для работы с формами Встроенный интерфейс администратора Встроенная система кэширования Интернационализация + многое другое
  7. 7. 7 Основные принципы Django Django стремится быть «питонической» DRY (Don't Repeat Yourself) Слабая зависимость и гибкость Быстрая разработка
  8. 8. 8 Общий обзор архитектуры Django Веб-браузер HTTP-клиент JavaScript Интернет HTTPD/веб-серверЗапрос HTTP (POST, GET) Промежуточная боработка запроса Анализ URL urls.py Промежуточная обработка представления Универсальные, полууниверсальные или собственные представления views.py Пакет моделей models.py ORM Python DB-API Адаптер базы данных Ответ HTTP Промежуточная боработка ответа Ответ Пакет шаблонов База данных (СУРБД) DJANGO
  9. 9. 9 Проект в Django — представляет собой набор конфигурационных файлов и приложений Django. Проект может содержать множество приложений Django. Приложение Django — набор файлов, содержащих описание моделей и представлений, которые являются частью одно пакета Python и представляют собой полное приложение. Приложение может содержаться во множестве проектов.
  10. 10. 10 Создание и запуск Django проекта Начать новый проект: django-admin.py startproject example Запустить локальный сервер: python manage.py runserver
  11. 11. 11 Минимальная структура проекта Django example/ example/ __init__.py settings.py urls.py wsgi.py manage.py – каталог проекта – пакет проекта – настройки проекта – конфигурация URL адресов – точка входа для wsgi – командная утилита Django
  12. 12. 12 Создание Django приложений python manage.py startapp blog После создания нового Django приложения необходимо зарегестрировать его в списке приложений принадлежащих проекту. settings.py: INSTALLED_APPS = ( … 'example', 'blog' )
  13. 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. 14 Функция представления — представляет собой Python функцию, которая порождает содержимое страницы. from django.http import HttpResponse def hello(request): return HttpResponse(“Hello world”) django.http.HttpRequest Всегда возвращает HttpResponse
  15. 15. 15 Объекты запроса и ответа (HttpRequest) Класс HttpRequest представляет HTTP-запрос, полученный со стороны клиента и содержит: информацию об URL (path и д.р.), HTTP-заголовки запроса (META), информацию об отправленных данных (GET, POST и FILES), информацию о сессиях и cookies (session и COOKIES), прочие переменные сервера.
  16. 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. 17 Подклассы HttpResponse Модуль django.http содержит несколько подклассов HttpResponse, представляющих различные виды HTTP-ответов: HttpResponseRedirect (302) HttpResponseNotFound (404) HttpResponseForbidden (403) HttpResponseServerError (500) и другие
  18. 18. 18 Конфигурирование URLs построенно на принципе слабой связности. Каждая конфигурация должна храниться в виде файла с програмным кодом на языке Python, обычно с названием urls.py Такие файлы должны определять объект urlpatterns, получаемый в результате вызова функции django.conf.patterns. Путь к главному конфигуратору определяется в settings.py переменной ROOT_URLCONF
  19. 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. 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. 21 Система шаблонов Django Шаблон в Django представляет собой строку текста в специальном формате, предназначенную для отделения представления документа от его данных. Язык шаблонов в Django не имеет никакого отношения к Python и создан для веб-технологов и дизайнеров интерфейсов.
  22. 22. 22 Идеологические основы Django шаблонов Бизнес-логика должна быть отделена от логики представления. Синтаксис не должен быть привязан к HTML/XML. Предполагается, что дизайнеры уверенно владеют HTML. Не предполагается, что дизайнеры умеют программировать на Python. Не ставилась задача изобрести новый язык программирования.
  23. 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. 24 Яковенко Кирилл Сергеевич kirill.yakovenko@gmail.com Омский государственный университет им. Ф. М. Достоевского Факультет компьютерных наук

×