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

Базовые представления объектов

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

Давайте взглянем на одно из этих базовых представлений: представление «список объектов». Мы используем объект Publisher из главы «Модели»:

class Publisher(models.Model):
    name = models.CharField(max_length=30)
    address = models.CharField(max_length=50)
    city = models.CharField(max_length=60)
    state_province = models.CharField(max_length=30)
    country = models.CharField(max_length=50)
    website = models.URLField()

    class Meta:
        ordering = ["-name"]

    class Admin:
        pass

    def __unicode__(self):
        return self.name

Чтобы создать страницу со списком всех издателей[12] мы использовали такой файл со схемой URL:

from django.conf.urls.defaults import *
from django.views.generic import list_detail
from mysite.books.models import Publisher

publisher_info = {
    "queryset" : Publisher.objects.all(),
}

urlpatterns = patterns('',
    (r'^publishers/$', list_detail.object_list, publisher_info)
)

Это весь код на языке Python, который нам потребуется написать. Однако, нам ещё надо создать шаблон. Мы можем явно указать представлению object_list какой шаблон надо использовать, добавив параметр template_name в словарь дополнительных параметров. Но в случае отсутствия явного указания шаблона Django будет искать шаблон, соответствующий имени объекта. В этом случае, таким шаблоном будет books/publisher_list.html — часть books идёт от имени приложения, которое определяет модель, а publisher является именем модели приведённым к нижнему регистру.

Этот шаблон будет обработан с учётом контекста, содержащего переменную object_list со списком всех объектов Book. Очень простой шаблон может выглядеть так:

{% extends "base.html" %}

{% block content %}
    <h2>Publishers</h2>
    <ul>
        {% for publisher in object_list %}
            <li>{{ publisher.name }}</li>
        {% endfor %}
    </ul>
{% endblock %}

Вот всё что надо. Все преимущества базовых представления идут от изменения словаря с информацией, который передаётся такому представлению. Приложение «Справочник по базовым представлениям» документирует все базовые представления и все их параметры. Остальная часть главы описывает общие способы работы и настройки базовых представлений.



[12] В оригинальной книге, здесь они создают страницу со списком всех книг. Хотя, судя по коду, книги тут ни при чём.


Увидели ошибку?
Выделите её мышкой и нажмите
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