|
Оглавление
|
Django предоставляет удобный и мощный API для загрузки шаблонов с диска с целью удаления избыточности в вызовах подгрузки шаблонов и в самих шаблонах. Для использования этого API сначала требуется указать среде разработки где располагаются шаблоны. Это делать надо в файле конфигурации проекта —
Если вы следуете книге, откройте ваш
TEMPLATE_DIRS = (
# Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
)
Этот параметр указывает механизму шаблонной системы Django пути, по которым следует искать шаблоны. Укажите требуемый каталог, в котором вы будете хранить шаблоны, например так: TEMPLATE_DIRS = (
'/home/django/mysite/templates',
)
Надо отметить несколько моментов:
После установки TEMPLATE_DIRS, следующим шагом будет изменение кода представления для использования функциональности Django для загрузки шаблонов, вместо указания путей к шаблонам. Возвращаясь к нашему представлению current_datetime, давайте изменим его следующим образом: from django.template.loader import get_template
from django.template import Context
from django.http import HttpResponse
import datetime
def current_datetime(request):
now = datetime.datetime.now()
t = get_template('current_datetime.html')
html = t.render(Context({'current_date': now}))
return HttpResponse(html)
В данном примере, мы использовали функцию
В данном примере наш шаблон имеет имя
Для того, чтобы определить расположение шаблонов на файловой
системе,
Если
Эта страница с ошибкой похожа на такую же, которую мы рассматривали в главе «Представления и привязки URL», только одна вещь тут новая — отладочная информация: секция «Template-loader postmortem». Эта информация неоценима при отладке ошибок загрузки шаблона.
Далее, создадим файл
<html><body>It is now {{ current_date }}.</body></html>
Обновите страницу в вашем браузере и вы увидите результат обработки шаблона.
Мы показали вам как загружать шаблон, заполнять
Речь идёт о функции
Ниже представлен старый знакомый пример
current_datetime, использующий функцию
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})
Какая разница! Пройдёмся по изменениям в коде:
Первым аргументом функции
Рассмотрим последнюю инкарнацию функции
def current_datetime(request):
now = datetime.datetime.now()
return render_to_response('current_datetime.html', {'current_date': now})
Постоянно вы будете ловить себя на том, что вы вычисляете
значения, сохраняете их в переменных
(см.
Таким образом, если вы один из таких ленивых разработчиков и
вам нравится краткий код, вы можете воспользоваться встроенной
в Python функцией def current_datetime(request):
current_date = datetime.datetime.now()
return render_to_response('current_datetime.html', locals())
Здесь, вместо ручного ввода контекстного словаря, как это было
раньше, вы передали значение функции
Следует обратить внимание при использовании
Может стать неудобно хранить все шаблоны в одном каталоге. Вам может понадобиться хранить шаблоны в подкаталогах вашего каталога шаблонов, это нормально. Действительно, мы рекомендуем делать так. Более продвинутые особенности Django (такие как общая система представлений, которая будет описана в главе «Генерация данных, отличных от HTML») ожидают такое расположение шаблонов по умолчанию.
Хранение шаблонов в подкаталогах несложное занятие. В вашем
вызове t = get_template('dateapp/current_datetime.html')
Так как Нет ограничений на глубину дерева подкаталогов. Используйте столько сколько нужно.
Замечание
Пользователи Windows должны использовать прямой слэш
(/) вместо обратного
(\). Функция
После того как мы описали механизм загрузки шаблонов, мы можем рассказать о встроенном шаблонном теге, который использует его: {% include %}. Этот тег позволяет вам подключать содержимое другого шаблона. Аргументом тега является путь к подключаемому шаблону. Имя шаблона может быть представлено как переменной, так и строкой, заключённой в двойные или одинарные кавычки. Если вы используете один и тот же код в нескольких шаблонах, рассмотрите возможность использования тега {% include %}, чтобы исключить дублирование кода.
Следующий пример дважды подключает содержимое шаблона
{% include 'nav.html' %}
{% include "nav.html" %}
Следующий пример показывает как следует подключать содержимое
шаблона {% include 'includes/nav.html' %}
Следующий пример подключает содержимое шаблона, имя которого
содержится в переменной {% include template_name %}
Подобно функции Подключенные шаблоны обрабатываются в контексте шаблона, который их подключил. Например, рассмотрим два шаблона: # mypage.html
<html>
<body>
{% include "includes/nav.html" %}
<h1>{{ title }}</h1>
</body>
</html>
# includes/nav.html
<div id="nav">
You are in: {{ current_section }}
</div>
При обработке шаблона Если подключаемый шаблон не существует, Django выполнит одно действие из нижеприведённых:
|
Увидели ошибку?
Выделите её мышкой и нажмите
-
Обработано:
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 |