DJANGO Simon Willison Adrian Holovaty Jacob Kaplan-Moss Wilson Miner.

Презентация:



Advertisements
Похожие презентации
Django Саяпова Наталья, 222 группа. Django Это сильный web-framework, созданный на Python, который следует философии DRY (Dont repeat yourself) Он реализован.
Advertisements

Распределённая очередь заданий Смирнов В.А. Меженин М.Г. Доклад по дисциплине «Распределённые объектные технологии» ЮУрГУ 2012.
Разработка информационной системы управления документацией (Wiki-системы) программный проект по курсу «Базы данных» Скворцов А.Н. гр. 4081/4 Рытенков А.С.
Создание проекта Zend Лекция 2 1.Создание нового проекта 2.Анализ нового проекта 3.Создание макетов.
Дизайн и Верстка Системы Организации Видео Архива (СОВА) МИЭМ, Пашинцев Иван, С-55.
Powerpoint Templates Page 1 Язык разметки гипертекста HTML.
КУРС «WEB-ДИЗАЙН». Что такое Web-страница? То, что мы видим в окне браузера, когда заходим на какой-либо сайт! Мы видим веб-страницу сайта – ее содержимое!
NauDoc NauDoc [Цикл презентаций «Легкий старт»] Часть 1: Введение в NauDoc.
Гиперссылки. Организация ссылок Ссылка состоит из двух частей. Первая из них – это то, что вы видите на Web странице; она называется указатель ссылки.
Эрмитаж: концепция интерфейса в продукте «1 С-Битрикс: Управление сайтом»
Разработка современной CMS. Преимущества, которые дает PHP5 при разработке таких систем Современные технологии эффективной разработки веб- приложений с.
Для того, чтобы начать работу с Вашим персональным сайтом, перейдите по адресу
2012 г. Начнём мы наш урок с сайта входящий в разработку Google. После того, как мы попали на сайт нам, необходимо зарегистрироваться в.
Информационно- образовательная система «Электронный журнал кафедры» Руководитель: проф. Шеховцов Б.Г. Разработчики: доц. Саранча С.Н. ст.гр. КСС-01-3 Пищемуха.
Инструментальные средства визуальной коммуникации и прикладной дизайн Лекция 3.
Решение прикладных задач: Хранение неограниченного объема информации за любой период времени Возможность анализа любых хранящихся данных за определенный.
Сайт «Профессиональная ориентация молодежи в области информационных технологий»
С помощью Atilekt.CMS Как управлять сайтом. 1. Заходим по адресу: 2. Вводим логин и пароль 3. Выбираем привычный для нас язык.
ДАЛЕЕ БАЗА ДАННЫХ ACCESS Проектирование базы данных Создание базы данных Создание базы данных без помощи мастера Таблицы Создание таблицы в режиме конструктора.
Выполнил: Гусев Данил. Что такое программное обеспечение? Возможности современного ПК столь велики, что все большее число людей находят ему применение.
Транксрипт:

DJANGO Simon Willison Adrian Holovaty Jacob Kaplan-Moss Wilson Miner

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

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

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

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

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

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

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

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

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

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

Создание блога. Ваша первая страница на Django: «Hello World» В качестве первого задания, давайте создадим страницу, которая будет выводить знаменитое сообщение: «Hello World» Если бы вы создавали обычную страницу с текстом «Hello World» без использования Django, то достаточно было бы: создать файл с таким текстом дать ему имя hello.html загрузить в каталог на веб сервере. Следует отметить, что в этом случае, вы определяете два ключевых параметра страницы: её содержимое (строка «Hello World») и её URL. ( Используя Django, вы указываете те же самые параметры, но другим способом. Содержимое страницы создаётся с помощью функции представления, а URL определяется в файле привязок URL

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

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

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

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

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

Использование 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'

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

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

Привязка URL Для привязки функции представления к конкретному URL в Django используются файлы привязки URL. Когда мы запускали django-admin.py startproject, скрипт автоматически создал файл привязки: urls.py. По-умолчанию, он выглядит примерно так: 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)), ) Раскомментируем некоторые строки:

Регистрация нашей модели Открываем файл mysite/blog/models.py, добавляем инструкцию импортирования приложения администрирования и затем добавляем в конец файла строку, выполняющую регистрацию нашей модели: 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)

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

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

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

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

Создание шаблона адреса 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), )

Создаем в каталоге mysite/blog/templates шаблон с именем base.html и добавляем в него следующие строки: 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 } mysite.example.com {% block content %} {% endblock %} Усовершенствование шаблона

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

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

Тестирование приложений 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

Пример написания 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)

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