|
Table of contents
|
Вы изучили основы использования шаблонной системы. Теперь давайте используем эти знания для создания представления. Вспомните представление current_datetime из модуля mysite.views, с которого мы начали предыдущую главу. Вот как оно выглядит: from django.http import HttpResponse
import datetime
def current_datetime(request):
now = datetime.datetime.now()
html = "<html><body>It is now %s.</body></html>" % now
return HttpResponse(html)
Внесём изменения в это представление, чтобы оно стало использовать шаблонную систему Django. Сначала вы можете подумать о чём-то подобном: from django.template import Template, Context
from django.http import HttpResponse
import datetime
def current_datetime(request):
now = datetime.datetime.now()
t = Template("<html><body>It is now {{ current_date }}.</body></html>")
html = t.render(Context({'current_date': now}))
return HttpResponse(html)
Конечно, такой подход использует шаблонную систему, но не решает проблемы, которые мы описали в начале этой главы. А именно, шаблон всё ещё внедрён в код. Исправим это, поместив шаблон в отдельный файл, который будет использоваться этим представлением.
Сначала вы можете рассмотреть вариант сохранения шаблона в
каком-нибудь файле на файловой системе и затем использовать
стандартную для Python функциональность для загрузки содержимого
этого шаблона. Ниже показан такой вариант, предполагается, что
шаблон находится в файле
from django.template import Template, Context
from django.http import HttpResponse
import datetime
def current_datetime(request):
now = datetime.datetime.now()
# Simple way of using templates from the filesystem.
# This doesn't account for missing files!
fp = open('/home/djangouser/templates/mytemplate.html')
t = Template(fp.read())
fp.close()
html = t.render(Context({'current_date': now}))
return HttpResponse(html)
Такой подход, тем не менее, не элегантен по следующим причинам:
Для решения подобных проблем мы будем использовать загрузку шаблонов и каталоги шаблонов, которые описаны в этой главе далее. |
Found misprint?
Select it with the mouse and hit Enter
-
Processed:
33
1
199
25
The full repository of DjangoBook translation you can get on GitHub.
We appreciate your patches!
We are glad to hear your questions, comments or suggestions!
(Open in new tab)
Users number: 601
Русская группа
Ускорить процесс перевода!
ЯМ:41001223475816
|
| © 2008-2012 Ruslan Popov @ gmail.com | Powered by Django 1.2.5 |