Главная | Архив новостей | Общение | Площадка | Примеры OpenID
Хостинг Django от «Джино»
Оглавление

Шаблон MVC разработки

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

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

from django.db import models

class Book(models.Model):
    name = models.CharField(max_length=50)
    pub_date = models.DateField()

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

from django.shortcuts import render_to_response
from models import Book

def latest_books(request):
    book_list = Book.objects.order_by('-pub_date')[:10]
    return render_to_response('latest_books.html', {'book_list': book_list})

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

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

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

Файл latest_books.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. Такой класс называется моделью. С помощью данного класса вы можете создавать, получать, обновлять и удалять записи в таблице вашей базы данных, используя простой код на языке Python вместо использования повторяющихся SQL команд.

  • Файл views.py содержит логику отображения страницы, в функции latest_books(). Такая функция называется представлением.

  • Файл urls.py определяет какое именно представление будет вызвано для URL, заданного в виде шаблона. В данном случае URL /latest/ будет обработано функцией latest_books(). Другими словами, если имя вашего домена example.com, то любой доступ к http://example.com/latest/ будет обработан функцией latest_books().

  • Файл latest_books.html является HTML шаблоном, который описывает дизайн страницы. Он использует шаблонный язык с основными логическими операторами — {% for book in book_list %}.

Объединённые вместе, эти компоненты приложения следуют шаблону Модель-Представление-Управление (Model-View-Controller, MVC). Примем, что MVC определяет способ разработки программного обеспечения при котором код для определения и доступа к данным (модель) отделён от логики приложения (управление), которая в свою очередь отделена от интерфейса пользователя (представление).

Основное преимущество такого подхода заключается в свободе объединения этих компонентов. Следовательно, каждая отдельная часть приложения, созданного с помощью Django, имеет одно назначение и может быть изменена независимо, т.е., без влияния на остальные компоненты. Например, разработчик может изменить URL для данной части приложения без изменения остального кода. Дизайнер может изменить HTML страницы без внесения изменений в код, который отображает страницу. Администратор базы данных может переименовать таблицу и определить эти изменения в одном месте, вместо того, чтобы искать и вносить изменения во множество файлов.

В данной книге каждый компонент MVC описан в своей собственной главе.


Увидели ошибку?
Выделите её мышкой и нажмите
Ctrl-Enter
Обработано:
1049 49 130 71

Версия книги
1.0 2.0
Версия 2.0 в процессе перевода!

Мой луч
Многообразие света

Полезное
Актуальные вакансии, Python работа для python-разработчиков.


Скачать в формате
CHM от 2 сентября

Заказать PDF файл можно через почту, чат, джаббер. Всего 2WMZ. Содержимое точно соответствует содержимому сайта.
Чем чаще заказываете — тем больше перевожу.

Русская группа

на поддержку перевода
Яндекс Яндекс.Деньги Хочу такую же кнопку
Ускорить процесс перевода!
R130494980980
Z425285133788
E112528079659
U327380922061

Книга помогла реализовать:
Проект «Мой луч»
АРМ УФМС.


Мой вебсайт стоит666 337,31 руб

© 2008-2009 Ruslan Popov @ gmail.com Powered by Django 1.1 beta 1 SVN-11114
Главная | Архив новостей | Общение | Площадка | Примеры OpenID