'

DJANGO

Понравилась презентация – покажи это...





Слайд 0

DJANGO Simon Willison Adrian Holovaty Jacob Kaplan-Moss  Wilson Miner


Слайд 1

Это фреймворк для разработки веб-приложений, написанный на языке Python. С помощью фреймворков программистам не нужно для решения каждой конкретной задачи писать код с нуля. DJANGO 04.03.2015


Слайд 2

Model-view-controller (MVC) 04.03.2015 — архитектура программного обеспечения, в которой модель данных приложения, пользовательский интерфейс и управляющая логика разделены на три отдельных компонента, так, что модификация одного из компонентов оказывает минимальное воздействие на другие компоненты. Шаблон MVC позволяет разделить данные, представление и обработку действий пользователя на три отдельных компонента: Модель (Model) Представление (View) Поведение (Controller)


Слайд 3

Архитектура Django (MTV) 04.03.2015


Слайд 4

Некоторые возможности: ORM, API доступа к БД с поддержкой транзакций диспетчер URL на основе регулярных выражений расширяемая система шаблонов с тегами и наследованием подключаемая архитектура приложений, которые можно устанавливать на любые Django-сайты библиотека для работы с формами (наследование, построение форм по существующей модели БД) встроенная автоматическая документация по тегам шаблонов и моделям данных, доступная через административное приложение. 04.03.2015


Слайд 5

ORM — запись объектов программы в реляционную базу данных, отображение объекта и его представления в виде набора таблиц. ORM — технология программирования, которая связывает базы данных с концепциями объектно-ориентированных языков программирования, создавая «виртуальную объектную базу данных». 04.03.2015


Слайд 6

Страница DjangoResources в wiki проекта Django: здесь многие авторы сообщают всему миру о своих приложениях. Прямая ссылка на страницу: http://code.djangoproject.com/wiki/DjangoResources Google Code: бесплатное размещение и понятный интерфейс обеспечили сайту Google Code высокую популярность у разработчиков приложений на платформе Django. Djangopluggables.com: относительно новый ресурс djangopluggables.com представляет собой сайт с удобным дизайном, на котором собрана информация о самых разнообразных приложениях на платформе Django. 04.03.2015 Поиск приложений


Слайд 7

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


Слайд 8

Вы можете поместить приложение в любое место по своему желанию, но по сути у вас имеется три варианта: встраивание создание “разделяемого приложения” установка в каталог site-packages 04.03.2015 Как пользоваться приложениями? Сторонние приложения на платформе Django, так же, как и ваши, - это всего лишь модули на языке Python. Чтобы задействовать их в проекте, достаточно просто добавить строку, содержащую путь к приложению в параметр INSTALLED_APPS, в файле settings.py проекта.


Слайд 9

Django позволяет сфокусироваться на творческой части разработки, облегчая её нудную часть. Для этого разработчику предоставляются высокоуровневые шаблоны, готовые решения для стандартных задач и явные соглашения о том как надо решать проблемы. Цель: 04.03.2015


Слайд 10

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


Слайд 11

Создание блога. Ваша первая страница на Django: «Hello World» В качестве первого задания, давайте создадим страницу, которая будет выводить знаменитое сообщение: «Hello World» 04.03.2015


Слайд 12

Сделаем первый шаг в разработке приложения, создав проект. Проектом является набор настроек для экземпляра Django, включая конфигурацию базы данных, параметров для Django и настроек приложения. mysite/ __init__.py manage.py settings.py urls.py Новый проект 04.03.2015


Слайд 13

__init__.py: Файл необходим для того, чтобы Python рассматривал данный каталог как пакет, т.е., как группу модулей. manage.py: Это утилита командной строки, которая позволяет вам взаимодействовать с проектом различными методами. settings.py: Настройки для текущего проекта Django. urls.py: Описания URL для текущего проекта Django, так сказать «оглавление» для вашего сайта. Несмотря на свой небольшой размер, эти файлы формируют работоспособное приложение Django. Опишем назначение каждого файла: 04.03.2015


Слайд 14

Быстрый старт Каждый проект начинается с создания каталога: django-admin.py startproject mysite Для работы с базой данных необходимо создать в проекте приложение. Переходим в каталог ./mysite и приступаем к созданию: python manage.py startapp blog Переходим в каталог ./blog и принимаемся за наполнение файла models.py, в соответствии с разделом «Первая модель». 04.03.2015


Слайд 15

Первое приложение python manage.py startapp blog Эта команда ничего не выводит, она просто создаёт каталог blog в каталоге mysite. Посмотрим на содержимое этого каталога: blog/ __init__.py models.py views.py Это каркас для нашего приложения. 04.03.2015


Слайд 16

Первая модель from django.db import models class BlogPost (models.Model): title = models.CharField(max_length=150) body = models.TextField() timestamp = models.DateTimeField() 04.03.2015


Слайд 17

Использование SQLite В файле с настройками существует шесть параметров, имеющих отношение к базе данных: DATABASES_ENGINE, DATABASES_NAME, DATABASES_USER, DATABASES_PASSWOR, DATABASES_HOST, DATABASES_PORT. При использовании базы данных SQLite достаточно сообщить платформе Django всего два параметра: (с учетом того, что мы создали каталог db) DATABASES _ENGINE = 'sqlite3' DATABASES _NAME = r'C:\Python26\django\mysite\db\django.db' 04.03.2015


Слайд 18

04.03.2015 Создание таблиц Подключаемся к базе данных и создаем необходимые таблицы: .\manage.py syncdb Теперь в системе аутентификации имеется учетная запись суперпользователя.


Слайд 19

Настройка автоматизированного приложения администрирования. Так как это приложение не относится к разряду обязательных, его требуется указать в файле settings.py. Добавляем следующую строку в кортеж INSTALLED_APPS, сразу вслед за “django.contrib.auth”: “django.contrib.admin” Всякий раз после добавления нового приложения в свой проект, вы должны запустить команду syncdb, чтобы обеспечить создание всех необходимых таблиц в вашей базе данных. 04.03.2015


Слайд 20

Привязка URL Для привязки функции представления к конкретному URL в Django используются файлы привязки URL. Когда мы запускали django-admin.py startproject, скрипт автоматически создал файл привязки: urls.py. По-умолчанию, он выглядит примерно так: 04.03.2015 from django.conf.urls.defaults import * # Uncomment the next two lines to enable the admin: # from django.contrib import admin # admin.autodiscover() urlpatterns = patterns('', # Example: # (r'^mysite/', include('mysite.foo.urls')), # Uncomment the admin/doc line below and add 'django.contrib.admindocs' # to INSTALLED_APPS to enable admin documentation: # (r'^admin/doc/', include('django.contrib.admindocs.urls')), # Uncomment the next line to enable the admin: # (r'^admin/', include(admin.site.urls)), ) from django.conf.urls.defaults import * from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', # Example: # (r'^mysite/', include('mysite.foo.urls')), (r'^admin/doc/', include('django.contrib.admindocs.urls‘ )), (r'^admin/', include(admin.site.urls)), ) Раскомментируем некоторые строки:


Слайд 21

Регистрация нашей модели Открываем файл mysite/blog/models.py, добавляем инструкцию импортирования приложения администрирования и затем добавляем в конец файла строку, выполняющую регистрацию нашей модели: 04.03.2015 from django.db import models from django.contrib import admin class BlogPost (models.Model): title = models.CharField(max_length=150) body = models.TextField() timestamp = models.DateTimeField() admin.site.register(BlogPost)


Слайд 22

Опробование приложения администрирования 04.03.2015 выполняем команду manage.py runserver открываем в веб-браузере страницу http://127.0.0.1:8000/admin/ попадаем на домашнюю страницу администратора.


Слайд 23

04.03.2015


Слайд 24

04.03.2015


Слайд 25

04.03.2015


Слайд 26

Создание общедоступного раздела приложения блога Страница состоит из трех компонентов: Шаблон Функция представления Шаблон адреса URL 04.03.2015


Слайд 27

Создание шаблона {% for post in posts %} <h2>{{ post.title }}</h2> <p>{{ post.timestamp }}</p> <p>{{ post.body }}</p> {% endfor %} 04.03.2015 Сохраняем этот шаблон в файл с именем archive.html в каталоге templates, внутри каталога blog. Имя самого шаблона можно выбирать совершенно произвольно, но имя каталога обязательно должно быть templates.


Слайд 28

Создание функции представления Открываем файл blog/views.py и добавляем следующее: from django.template import loader, Context from django.http import HttpResponse from mysite.blog.models import BlogPost def archive(request): posts = BlogPost.objects.all() t = loader.get_template("archive.html") c = Context({ 'posts': posts }) return HttpResponse(t.render(c)) 04.03.2015


Слайд 29

Создание шаблона адреса URL В файле mysite/urls.py присутствует закомментированная строка с примером. Редактируем ее: url(r'^blog/', include('mysite.blog.urls')) Создаем новый файл mysite/blog/urls.py и добавляем в него следующие строки: from django.conf.urls.defaults import * from mysite.blog.views import archive urlpatterns = patterns('', url(r'^$', archive), ) 04.03.2015


Слайд 30

Создаем в каталоге mysite/blog/templates шаблон с именем base.html и добавляем в него следующие строки: <html> <style type="text/css"> body { color: #efd; background: #245; padding: 0 5em; margin: 0 } h1 { padding: 2em 1em; background: #756 } h2 { color: #bf8; border-top: 2px dotted #fff; margin-top: 2em } p {margin: 1em 0 } </style> <body> <h1> mysite.example.com</h1> {% block content %} {% endblock %} </body> </html> 04.03.2015 Усовершенствование шаблона


Слайд 31

Чтобы задействовать этот шаблон в приложении блога, необходимо изменить шаблон archive.html так, чтобы он ссылался на этот новый базовый шаблон и его блок “content”: {% extends "base.html" %} {% block content %} {% for post in posts %} <h2>{{ post.title }}</h2> <p>{{ post.timestamp }}</p> <p>{{ post.body }}</p> {% endfor %} {% endblock %} 04.03.2015 Усовершенствование шаблона


Слайд 32

Как протестировать? Запускаем тестовый сервер, выполнив команду python manage.py runserver. Сервер привязывается к адресу http://127.0.0.1:8000/, так что открываем браузер и проходим по ссылке http://127.0.0.1:8000/blog/. 04.03.2015


Слайд 33

04.03.2015


Слайд 34

Тестирование приложений Django def my_func(a_list, idx): """ >>> a = ['larry', 'curly', 'moe'] >>> my_func(a, 0) 'larry' >>> my_func(a, 1) 'curly' """ return a_list[idx] import unittest class MyFuncTestCase(unittest.TestCase): def testBasic(self): a = ['larry', 'curly', 'moe‘] self.assertEqual(my_func(a, 0), 'larry') self.assertEqual(my_func(a, 1), 'curly') Doctests Unit tests 04.03.2015


Слайд 35

Пример написания Doctests # models.py from django.db import models class Animal(models.Model): """ An animal that knows how to make noise # Create some animals >>> lion = Animal.objects.create(name="lion", sound="roar") >>> cat = Animal.objects.create(name="cat", sound="meow") # Make 'em speak >>> lion.speak() 'The lion says "roar"‘ >>> cat.speak() 'The cat says "meow"' """ name = models.CharField(max_length=20) sound = models.CharField(max_length=20) def speak(self): return 'The %s says "%s"' % (self.name, self.sound) 04.03.2015


Слайд 36

from django.utils import unittest from myapp.models import Animal class AnimalTestCase(unittest.TestCase): def setUp(self): self.lion = Animal.objects.create(name="lion", sound="roar") self.cat = Animal.objects.create(name="cat", sound="meow") def testSpeaking(self): self.assertEqual(self.lion.speak(), 'The lion says "roar"') self.assertEqual(self.cat.speak(), 'The cat says "meow"') Используем Unit tests 04.03.2015


Слайд 37

04.03.2015 СПАСИБО ЗА ВНИМАНИЕ!


×

HTML:





Ссылка: