python: djangomit.spbau.ru/files/afonina, fomkina - django.pdfpython - django 4 Начало...
TRANSCRIPT
Python: DjangoPython: Django
Афонина АлисаФомкина Мария
СПбАУ, 2010
Python - Django 2
Python: Django
The Web framework for perfectionists with deadlines ©
Особенности:
Слабая связанность (разделение на максимально независимые компоненты)
Don’t repeat yourself (DRY)
Явное лучше неявного
Отсутствие нового языка программирования в шаблонах
Реализация идеологии MVC
Python - Django 3
MVC
Model - доступ к данным, обрабатывается слоем работы с базой данных
View - часть, которая определяет, какие данные получать и как их отображать, обрабатывается представлениями и шаблонами.
Controller - часть, которая выбирает представление в зависимости от пользовательского ввода, обрабатывается самой средой разработки, следуя созданной вами схемой URL, и вызывает соответствующую функцию Python для указанного URL.
Python - Django 4
Начало работы
Для начала работы с Django необходимо : Установить python Установить django Настроить базу данных
Поддерживаемые СУБД:
PostgreSQL, SQLite 3, MySQL, Oracle Настройка сервера базы данных Установка библиотеки Python для поддержки
необходимой базы данных
Python - Django 5
Разработка
Сервер разработки:
python manage.py runserver : http://127.0.0.1:8000/
Отладка:
assert False
Python - Django 6
Project vs Application
Приложение — это переносимый набор некой функциональности
Проект — это экземпляр определённого набора кода Django-приложений и конфигурация для этих приложений
Python - Django 7
Создание нового проекта
Проектом является набор настроек для экземпляра Django, включая конфигурацию базы данных, параметров для Django и настроек приложения
django-admin.py startproject mysite
Структура проекта:
mysite/
- __init__.py - manage.py - settings.py - urls.py
Python - Django 8
settings.py Настройка БД
DATABASE_ENGINE = 'django.db.backends. *'
DATABASE_NAME = ' '
DATABASE_USER = ' '
DATABASE_PASSWORD = ' '
DATABASE_HOST = ' '
DATABASE_PORT = ' '
Режим отладки DEBUG = False
Директории, в которых хранятся шаблоны TEMPLATE_DIRS = ('/home/templates/mike', '/home/templates/john')
...
Python - Django 9
Установленные приложения
django.contrib.auth -- An authentication system
django.contrib.contenttypes -- A framework for content types
django.contrib.sessions -- A session framework
django.contrib.sites -- A framework for managing multiple sites with one Django installation
*Ваши приложения*
Python - Django 10
Создание приложения
python manage.py startapp polls Структура:
mysite/
polls/ - __init__.py
- models.py
- tests.py
- views.py
Python - Django 11
МоделиКаждая модель представлена в виде класса Python, который является потомком класса django.db.models.Model
Модель данных дублируется (SQL & Python). Зачем?
Пример :
From django.db import models
class Poll(models.Model):
question = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
poll = models.ForeignKey(Poll)
choice = models.CharField(max_length=200)
votes = models.IntegerField()
Python - Django 12
Добавление модели в приложение
Зарегистрировать модель в INSTALLED_APPS (settings.py)
Проверить модели - python manage.py validate
Сгенерировать и проверить SQL синтаксис:
python manage.py sqlall polls
Синхронизироваться с базой данных:
python manage.py syncdb
! Следует отметить, что syncdb не синхронизирует изменения в моделях или удаления моделей. Если вы изменили модель или удалили её, то команда syncdb не поможет с внесением изменений в базу.
Python - Django 13
Доступ к данным
API : python manage.py shell Poll.objects SQL INSERT && UPDATE ALL == .save() SQL SELECT * == .all SQL SELECT … == .filter(...) SQL DELETE == .delete() метод __unicode__()
Python - Django 14
Доступ к данным(2) Пример:
Python - Django 15
Шаблоны
Шаблон Django — это строка текста, которая предназначена для разделения представления документа от его данных
Основной способ использования: Создать объект Template, передав ему шаблон в виде строки.
Вызвать метод render() объекта Template с набором переменных (контекст). Метод возвратит полностью обработанный шаблон в виде строки, все переменные и шаблонные теги будут вычислены в
соответствии с контекстом.
Python - Django 16
Шаблоны(2)
Пример>>> from django import template
>>> t = template.Template('My name is {{ name }}.')
>>> c = template.Context({'name': 'Adrian'})
>>> print t.render(c)
My name is Adrian.
>>> c = template.Context({'name': 'Fred'})
>>> print t.render(c)
My name is Fred.
Python - Django 17
Создание шаблона
python manage.py shell Пример:
>>> from django.template import Context, Template
>>> t = Template('My name is {{ name }}.')
>>> c = Context({'name': 'Stephane'})
>>> t.render(c)
u'My name is Stephane.'
django.template.loader.get_template()
Python - Django 18
Загрузка шаблонов
TEMPLATE_DIRS = ( '/home/django/mysite/templates',)
(settings.py)
Короткий способ вызова шаблонаfrom django.shortcuts import render_to_response
import datetime
def current_datetime(request):
now = datetime.datetime.now()
return render_to_response('current_datetime.html', {'current_date': now})
Python - Django 19
Теги
{% if %} {% else %} {% endif %} {% for %} {% endfor %} {% include %} {% block %} …
Python - Django 20
Представления
views.py
from django.http import HttpResponse
def hello(request):return HttpResponse("Здравствуй, Мир")
urls.py
from django.conf.urls.defaults import *
from mysite.views import hello
urlpatterns = patterns('',
('^hello/$', hello),)
Python - Django 21
Динамические URL
Плохоurlpatterns = patterns('',
('^time/$', current_datetime),
('^time/plus/1/$', one_hour_ahead),
('^time/plus/2/$', two_hours_ahead),
('^time/plus/3/$', three_hours_ahead),
('^time/plus/4/$', four_hours_ahead),)
Хорошоurlpatterns = patterns('',
(r'^time/plus/\d{1,2}/$', hours_ahead),)
Python - Django 22
Обработка запроса
Приходит запрос к /hello/.
Django определяет корневой файл привязки, с помощью параметра конфигурации ROOT_URLCONF.
Django просматривает файл привязки в поисках первого шаблона, который совпадёт с запрошенным URL.
Если такой шаблон найден, Django вызывает ассоциированную с ним функцию представления.
Функция представления возвращает HttpResponse.
Django преобразовывает HttpResponse в соответствующий HTTP отклик, который реализует страницу.
Python - Django 23
Активация интерфейса администратора
INSTALLED_APPS
django.contrib.admin, django.contrib.auth, django.contrib.sessions, django.contrib.contenttype
MIDDLEWARE_CLASSES
django.middleware.common.CommonMiddleware, django.contrib.sessions.middleware.SessionMiddleware, django.contrib.auth.middleware.AuthenticationMiddleware
python manage.py syncdb, python manage.py createsuperuser
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
(r'^admin/', include(admin.site.urls)),)
Python - Django 24
Интерфейс администратора
Python - Django 25
Добавить свою модель
mysite/polls: admin.pyfrom django.contrib import admin
from mysite.polls.models import Poll
admin.site.register(Poll)
Python - Django 26
Редактирование
Python - Django 27
Полезные ссылки
http://www.djangoproject.com/
http://docs.djangoproject.com/en/1.2/intro/
http://djbook.ru/
Вопросы?