Использовать «сейчас» в Django Blocktrans? - PullRequest
6 голосов
/ 08 февраля 2011

Я бы хотел добавить год в блоктранс Django - используя синтаксис ниже.

{% blocktrans with now|date:"Y" as copydate %}
     © {{ copydate }} Company
{% endblocktrans %}

Это похоже на существующий билет Django (http://code.djangoproject.com/ticket/3088),, который, очевидно, должен работать сейчас, но я тоже не могу приступить к работе.

В обоих случаях тег просто не раскрывается, но остальная часть blocktrans отображается нормально.

Ответы [ 3 ]

10 голосов
/ 02 марта 2011

Единственный способ - получить вашу дату в python и использовать фильтр даты, как предлагает Рейнер, или определить свой собственный тег шаблона. Вы можете создать несколько контекстных процессоров для установки даты в вашем контексте.

def my_date(request):
  import datetime
  return {'my_date':datetime.datetime.now()}

и добавьте это в settings.py

TEMPLATE_CONTEXT_PROCESSORS = DEFAULT_SETTINGS.TEMPLATE_CONTEXT_PROCESSORS + (
      'the_package_of_my_tiny_function.my_date',
      )

Используйте его в своих шаблонах следующим образом:

   {% blocktrans with my_date|date:"Y" as copydate %}
      © {{ copydate }} Company
   {% endblocktrans %}

Не забудьте передать RequestContext как context_instance в ваших представлениях

Здесь является примером.

5 голосов
/ 26 ноября 2014

Начиная с Django 1.8, теперь вы можете использовать синтаксис {% now 'Y' as copydate %}, поэтому вы должны иметь возможность:

{% now 'Y' as copydate %}
{% blocktrans %}© {{ copydate }} Company{% endblocktrans %}

Источник: https://docs.djangoproject.com/en/dev/ref/templates/builtins/#now

1 голос
/ 08 февраля 2011

Тег now возвращает отформатированную дату в виде строки, соответствующей переданному формату.date вероятно требуется объект datetime/date.Поэтому объединение их в цепочку не сработает.

Я даже не уверен, что вы можете использовать тег now в выражении with, но попробуйте это.

{% blocktrans with now "Y" as copydate %}

now принимает ту же строку формата, что и date.Если это тоже не сработает, лучше всего передать шаблону datetime.datetime.now() результат и использовать его вместо now.

{% blocktrans with my_date|date:"Y" as copydate %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...