Как я могу получить Django TemplateLoader для просмотра текущего контекста или запроса? - PullRequest
1 голос
/ 15 мая 2010

Я пытаюсь создать Django TemplateLoader, но я не могу заставить его «видеть» ни текущий контекст, ни запрос, поэтому я не могу с этим ничего поделать.

Кто-нибудь знает, как я могу заставить Django TemplateLoader делать это?

Большое спасибо

Джо

1 Ответ

1 голос
/ 17 мая 2010

Место для принятия решений по шаблонам на ваш взгляд. Там у вас есть доступ к запросу, и вы можете динамически создавать имя шаблона в зависимости от того, какие условия вам нравятся. Например.,

def my_view(request, ...):
  ...
  template_name = 'template.html'
  if is_mobile(request): template_name = 'mobile_' + template_name
  template = get_template(template_name)
  context = RequestContext(request, {...})
  return HttpResponse(template.render(context))

Где вы предоставляете is_mobile(). Лучше было бы предоставить метод, который принимает запрос и имя шаблона и возвращает один соответствующим образом измененный (чтобы можно было закодировать эту логику один раз, а не разбросать по нескольким представлениям).

Вы также можете получить некоторое кредитное плечо от select_template () , который принимает список имен шаблонов-кандидатов, возвращая шаблон для первого найденного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...