在django blocktrans中使用'now'?

mik*_*ana 6 django templates internationalization

我想将年份添加到Django blocktrans中 - 使用下面的语法.

{% blocktrans with now|date:"Y" as copydate %}
     © {{ copydate }} Company
{% endblocktrans %}
Run Code Online (Sandbox Code Playgroud)

这类似于现有的Django票证(http://code.djangoproject.com/ticket/3088),它显然应该可以正常工作,但我也无法工作.

在这两种情况下,标签都不会被扩展,但其余的块转换呈现良好.

mig*_*iga 10

唯一的方法是在python中获取日期并使用日期过滤器,因为Reiner建议或定义您自己的模板标签.您可以创建一个小的上下文处理器来在上下文中设置日期.

def my_date(request):
  import datetime
  return {'my_date':datetime.datetime.now()}
Run Code Online (Sandbox Code Playgroud)

并在settings.py中添加此项

TEMPLATE_CONTEXT_PROCESSORS = DEFAULT_SETTINGS.TEMPLATE_CONTEXT_PROCESSORS + (
      'the_package_of_my_tiny_function.my_date',
      )
Run Code Online (Sandbox Code Playgroud)

在您的模板中使用它,如下所示:

   {% blocktrans with my_date|date:"Y" as copydate %}
      © {{ copydate }} Company
   {% endblocktrans %}
Run Code Online (Sandbox Code Playgroud)

不要忘记在视图中将RequestContext作为context_instance传递

是一个例子.


Bap*_* M. 5

从Django 1.8开始,您现在可以使用{% now 'Y' as copydate %}语法,因此您应该能够:

{% now 'Y' as copydate %}
{% blocktrans %}© {{ copydate }} Company{% endblocktrans %}
Run Code Online (Sandbox Code Playgroud)

资料来源:https://docs.djangoproject.com/en/dev/ref/templates/builtins/#now