Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

python-04

.pdf
Скачиваний:
43
Добавлен:
22.03.2016
Размер:
846.57 Кб
Скачать

Язык программирования Python

Курушин Д.С.

2009 2010

Среда разработки Django

Рассмотрим программу, написанную на Python без использования среды разработки:

Пример

print "Content-Type: text/html" print

print "<html><head><title>Книги</title></head><body>" print "<h1>Книги</h1>"

print "<ul>"

print "<li>Мастер и Маргарита</li>" print "<li>Фауст</li>"

print "</ul>"

print "</body></html>"

Среда разработки Django I

Cогласно требованиям CGI, код выводит: 1 Строку ¾Content-Type¿.

2 Пустую строку (конец заголовка HTTP).

3Необходимые HTML теги. Также:

1 Подключается к базе данных и выполняет запросы

2 Обрабатывает результат запроса

3Закрывает соединение с базой данных.

Среда разработки Django II

Данный подход имеет ряд проблем и недостатков. Задайте себе эти вопросы:

Что произойд¼т, если потребуется обеспечить работу

множества компонентов вашего приложения с базой данных?

Действительно ли разработчик должен беспокоиться о

выводе строки ¾Content-Type¿ и помнить о необходимости закрывать соединение с базой данных?

Что произойд¼т, если этот код будет использоваться во

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

Что произойд¼т, если дизайнер, который не имеет опыта

разработки на языке Python, пожелает поменять вид страницы?

Пример MVC

Давайте рассмотрим небольшой пример, который демонстрирует разницу между предыдущим подходом и тем, который предлагает среда разработки. Мы разделим этот код на четыре файла:

Файл models.py описывает таблицу базы данных from django.db import models

class Book(models.Model):

name = models.CharField(max_length=50) pub_date = models.DateField()

Пример MVC

Файл views.py описывает логику приложения

from django.shortcuts import render_to_response from models import Book

def latestbooks(request):

book_list = Book.objects.order_by('-pub_date')[:10] return render_to_response(

'latestbooks.html', {'book_list': book_list}

)

Пример MVC

Файл urls.py описывает соответствие URL логике приложения

from django.conf.urls.defaults import * import views

urlpatterns = patterns('', (r'^latest/$', views.latestbooks),

)

Пример MVC

Файл latestbooks.html описывает HTML шаблон

<html><head><title>Книги</title></head>

<body>

<h1>Книги</h1>

<ul>

{% for book in book_list %} <li>{{ book.name }}</li>

{% endfor %} </ul> </body></html>

Пояснения

Главной идеей в Django является разделение задач:

Ôàéë models.py содержит описание таблицы базы данных, представленное в виде класса Python. Такой класс называется моделью. С помощью данного класса вы можете создавать, получать, обновлять и удалять записи в таблице вашей базы данных.

Ôàéë views.py содержит логику отображения страницы в функции latestbooks(). Такая функция называется представлением.

Ôàéë urls.py определяет какое именно представление будет вызвано для URL, заданного в виде шаблона.

Ôàéë latestbooks.html является HTML шаблоном, который описывает дизайн страницы.

Определения и понятия I

Объедин¼нные вместе, эти компоненты приложения следуют шаблону Модель ! Представление ! Контролл¼р

(Model ! View ! Controller, MVC).

Определение

MVC определяет способ разработки программного обеспечения при котором код для определения и доступа к данным (модель) отдел¼н от логики приложения (управление), которая в свою очередь отделена от интерфейса пользователя (представление).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]