|
Оглавление
|
Содержание Перевод © Попов Руслан <ruslan.popov • gmail> В главе «Представления и привязки URL» мы описали основы создания динамических сайтов с помощью Django: настройка представлений и схемы URL для них. Как было рассказано, представление отвечает за некоторую произвольную логику и возвращает отклик. В одном из примеров логикой являлось вычисление текущей даты и времени. В современных веб-приложениях произвольная логика часто вовлечена в работу с базой данных. Обычно, сайт такого типа подключается к серверу базы данных, получает от него некоторые данные и, выполнив форматирование, отображает эти данные на странице. Так же сайт может предоставлять посетителям сайта возможность заполнять базу данных своими данными. Множество сложных сайтов предоставляют некую комбинацию этих двух вариантов. Например, http://www.amazon.com/ является отличным примером такого сайта. Каждая страница продукта, по существу, является запросом в базу данных продуктов Amazon, отформатированном в виде HTML. А когда вы отсылаете свой комментарий, он помещается в базу данных отзывов. Django отлично подходит для создания сайтов, ориентированных на использование совместно с базой данных, т.к., она поставляется с простыми, но мощными механизмами выполнения запросов к базе данных с помощью Python. Эта глава описывает этот механизм: слой Django для работы с базой данных. Следует отметить, что необязательно знать основы теории баз данных и SQL для использования этого слоя Django, но это крайне рекомендуется. Введение в эти понятия находится вне сферы этой книги. Вероятно, вы сможете понять концепции, учитывая контекст изложения. Подобно определённому в главе «Представления и привязки URL» «тупому» способу генерации вывода с помощью представлений (вбивание руками текста прямо в код представления), существует «тупой» способ получаения в представлениях информации из базы данных. Это просто: используйте любую существующую библиотеку языка Python для выполнения SQL запроса и обрабатывайте его результаты. В этом примере представления мы используем библиотеку MySQLdb (доступную по адресу http://www.djangoproject.com/r/python-mysql/) для подключения к базе данных MySQL, получения нескольких записей и помещения их в шаблон для отображения на странице сайта: from django.shortcuts import render_to_response
import MySQLdb
def book_list(request):
db = MySQLdb.connect(user='me', db='mydb', passwd='secret', host='localhost')
cursor = db.cursor()
cursor.execute('SELECT name FROM books ORDER BY name')
names = [row[0] for row in cursor.fetchall()]
db.close()
return render_to_response('book_list.html', {'names': names})
Такой подход работает, но вы должны немедленно столкнуться с некоторыми проблемами:
Как вы можете ожидать, слой Django для работы с базами данных помогает решать такие проблемы. Далее представлен пример как надо изменить предыдущее представление для использования Django API для работы с базами данных: from django.shortcuts import render_to_response
from mysite.books.models import Book
def book_list(request):
books = Book.objects.order_by('name')
return render_to_response('book_list.html', {'books': books})
Мы разберём этот код немного позже в этой главе. |
Увидели ошибку?
Выделите её мышкой и нажмите
-
Обработано:
511
49
130
71
Версия книги
1.0
2.0
Версия 2.0 в процессе перевода!
Мой луч
Многообразие света
Полезное
Актуальные вакансии,
Python работа
для python-разработчиков.
Скачать в формате
CHM от 2 сентябряЗаказать PDF файл можно через почту, чат, джаббер. Всего 2WMZ. Содержимое точно соответствует содержимому сайта. Чем чаще заказываете — тем больше перевожу. Русская группа
Ускорить процесс перевода!
R130494980980
Z425285133788 E112528079659 U327380922061 Книга помогла реализовать:
|
| © 2008-2009 Ruslan Popov @ gmail.com | Powered by Django 1.1 beta 1 SVN-11114 |