27
Python: Django Python: Django Афонина Алиса Фомкина Мария СПбАУ, 2010

Python: Djangomit.spbau.ru/files/Afonina, Fomkina - Django.pdfPython - Django 4 Начало работы Для начала работы с Django необходимо : Установить

  • Upload
    others

  • View
    22

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Python: Djangomit.spbau.ru/files/Afonina, Fomkina - Django.pdfPython - Django 4 Начало работы Для начала работы с Django необходимо : Установить

Python: DjangoPython: Django

Афонина АлисаФомкина Мария

СПбАУ, 2010

Page 2: Python: Djangomit.spbau.ru/files/Afonina, Fomkina - Django.pdfPython - Django 4 Начало работы Для начала работы с Django необходимо : Установить

Python - Django 2

Python: Django

The Web framework for perfectionists with deadlines ©

Особенности:

Слабая связанность (разделение на максимально независимые компоненты)

Don’t repeat yourself (DRY)

Явное лучше неявного

Отсутствие нового языка программирования в шаблонах

Реализация идеологии MVC

Page 3: Python: Djangomit.spbau.ru/files/Afonina, Fomkina - Django.pdfPython - Django 4 Начало работы Для начала работы с Django необходимо : Установить

Python - Django 3

MVC

Model - доступ к данным, обрабатывается слоем работы с базой данных

View - часть, которая определяет, какие данные получать и как их отображать, обрабатывается представлениями и шаблонами.

Controller - часть, которая выбирает представление в зависимости от пользовательского ввода, обрабатывается самой средой разработки, следуя созданной вами схемой URL, и вызывает соответствующую функцию Python для указанного URL.

Page 4: Python: Djangomit.spbau.ru/files/Afonina, Fomkina - Django.pdfPython - Django 4 Начало работы Для начала работы с Django необходимо : Установить

Python - Django 4

Начало работы

Для начала работы с Django необходимо : Установить python Установить django Настроить базу данных

Поддерживаемые СУБД:

PostgreSQL, SQLite 3, MySQL, Oracle Настройка сервера базы данных Установка библиотеки Python для поддержки

необходимой базы данных

Page 5: Python: Djangomit.spbau.ru/files/Afonina, Fomkina - Django.pdfPython - Django 4 Начало работы Для начала работы с Django необходимо : Установить

Python - Django 5

Разработка

Сервер разработки:

python manage.py runserver : http://127.0.0.1:8000/

Отладка:

assert False

Page 6: Python: Djangomit.spbau.ru/files/Afonina, Fomkina - Django.pdfPython - Django 4 Начало работы Для начала работы с Django необходимо : Установить

Python - Django 6

Project vs Application

Приложение — это переносимый набор некой функциональности

Проект — это экземпляр определённого набора кода Django-приложений и конфигурация для этих приложений

Page 7: Python: Djangomit.spbau.ru/files/Afonina, Fomkina - Django.pdfPython - Django 4 Начало работы Для начала работы с Django необходимо : Установить

Python - Django 7

Создание нового проекта

Проектом является набор настроек для экземпляра Django, включая конфигурацию базы данных, параметров для Django и настроек приложения

django-admin.py startproject mysite

Структура проекта:

mysite/

- __init__.py - manage.py - settings.py - urls.py

Page 8: Python: Djangomit.spbau.ru/files/Afonina, Fomkina - Django.pdfPython - Django 4 Начало работы Для начала работы с Django необходимо : Установить

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')

...

Page 9: Python: Djangomit.spbau.ru/files/Afonina, Fomkina - Django.pdfPython - Django 4 Начало работы Для начала работы с Django необходимо : Установить

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

*Ваши приложения*

Page 10: Python: Djangomit.spbau.ru/files/Afonina, Fomkina - Django.pdfPython - Django 4 Начало работы Для начала работы с Django необходимо : Установить

Python - Django 10

Создание приложения

python manage.py startapp polls Структура:

mysite/

polls/ - __init__.py

- models.py

- tests.py

- views.py

Page 11: Python: Djangomit.spbau.ru/files/Afonina, Fomkina - Django.pdfPython - Django 4 Начало работы Для начала работы с Django необходимо : Установить

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()

Page 12: Python: Djangomit.spbau.ru/files/Afonina, Fomkina - Django.pdfPython - Django 4 Начало работы Для начала работы с Django необходимо : Установить

Python - Django 12

Добавление модели в приложение

Зарегистрировать модель в INSTALLED_APPS (settings.py)

Проверить модели - python manage.py validate

Сгенерировать и проверить SQL синтаксис:

python manage.py sqlall polls

Синхронизироваться с базой данных:

python manage.py syncdb

! Следует отметить, что syncdb не синхронизирует изменения в моделях или удаления моделей. Если вы изменили модель или удалили её, то команда syncdb не поможет с внесением изменений в базу.

Page 13: Python: Djangomit.spbau.ru/files/Afonina, Fomkina - Django.pdfPython - Django 4 Начало работы Для начала работы с Django необходимо : Установить

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__()

Page 14: Python: Djangomit.spbau.ru/files/Afonina, Fomkina - Django.pdfPython - Django 4 Начало работы Для начала работы с Django необходимо : Установить

Python - Django 14

Доступ к данным(2) Пример:

Page 15: Python: Djangomit.spbau.ru/files/Afonina, Fomkina - Django.pdfPython - Django 4 Начало работы Для начала работы с Django необходимо : Установить

Python - Django 15

Шаблоны

Шаблон Django — это строка текста, которая предназначена для разделения представления документа от его данных

Основной способ использования: Создать объект Template, передав ему шаблон в виде строки.

Вызвать метод render() объекта Template с набором переменных (контекст). Метод возвратит полностью обработанный шаблон в виде строки, все переменные и шаблонные теги будут вычислены в

соответствии с контекстом.

Page 16: Python: Djangomit.spbau.ru/files/Afonina, Fomkina - Django.pdfPython - Django 4 Начало работы Для начала работы с Django необходимо : Установить

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.

Page 17: Python: Djangomit.spbau.ru/files/Afonina, Fomkina - Django.pdfPython - Django 4 Начало работы Для начала работы с Django необходимо : Установить

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()

Page 18: Python: Djangomit.spbau.ru/files/Afonina, Fomkina - Django.pdfPython - Django 4 Начало работы Для начала работы с Django необходимо : Установить

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})

Page 19: Python: Djangomit.spbau.ru/files/Afonina, Fomkina - Django.pdfPython - Django 4 Начало работы Для начала работы с Django необходимо : Установить

Python - Django 19

Теги

{% if %} {% else %} {% endif %} {% for %} {% endfor %} {% include %} {% block %} …

Page 20: Python: Djangomit.spbau.ru/files/Afonina, Fomkina - Django.pdfPython - Django 4 Начало работы Для начала работы с Django необходимо : Установить

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),)

Page 21: Python: Djangomit.spbau.ru/files/Afonina, Fomkina - Django.pdfPython - Django 4 Начало работы Для начала работы с Django необходимо : Установить

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),)

Page 22: Python: Djangomit.spbau.ru/files/Afonina, Fomkina - Django.pdfPython - Django 4 Начало работы Для начала работы с Django необходимо : Установить

Python - Django 22

Обработка запроса

Приходит запрос к /hello/.

Django определяет корневой файл привязки, с помощью параметра конфигурации ROOT_URLCONF.

Django просматривает файл привязки в поисках первого шаблона, который совпадёт с запрошенным URL.

Если такой шаблон найден, Django вызывает ассоциированную с ним функцию представления.

Функция представления возвращает HttpResponse.

Django преобразовывает HttpResponse в соответствующий HTTP отклик, который реализует страницу.

Page 23: Python: Djangomit.spbau.ru/files/Afonina, Fomkina - Django.pdfPython - Django 4 Начало работы Для начала работы с Django необходимо : Установить

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)),)

Page 24: Python: Djangomit.spbau.ru/files/Afonina, Fomkina - Django.pdfPython - Django 4 Начало работы Для начала работы с Django необходимо : Установить

Python - Django 24

Интерфейс администратора

Page 25: Python: Djangomit.spbau.ru/files/Afonina, Fomkina - Django.pdfPython - Django 4 Начало работы Для начала работы с Django необходимо : Установить

Python - Django 25

Добавить свою модель

mysite/polls: admin.pyfrom django.contrib import admin

from mysite.polls.models import Poll

admin.site.register(Poll)

Page 26: Python: Djangomit.spbau.ru/files/Afonina, Fomkina - Django.pdfPython - Django 4 Начало работы Для начала работы с Django необходимо : Установить

Python - Django 26

Редактирование

Page 27: Python: Djangomit.spbau.ru/files/Afonina, Fomkina - Django.pdfPython - Django 4 Начало работы Для начала работы с Django необходимо : Установить

Python - Django 27

Полезные ссылки

http://www.djangoproject.com/

http://docs.djangoproject.com/en/1.2/intro/

http://djbook.ru/

Вопросы?