我想将年份添加到Django blocktrans中 - 使用下面的语法。
{% blocktrans with now|date:"Y" as copydate %}
© {{ copydate }} Company
{% endblocktrans %}
这与现有的Django票证(http://code.djangoproject.com/ticket/3088)相似,显然现在应该可以使用,但我也无法工作。
在这两种情况下,标签都不会展开,但其余的块转换效果很好。
答案 0 :(得分:10)
唯一的方法是在python中获取日期并使用日期过滤器,因为Reiner建议或定义您自己的模板标签。 您可以创建一个小的上下文处理器来在您的上下文中设置日期。
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传递
Here就是一个例子。
答案 1 :(得分:5)
从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
答案 2 :(得分:1)
now
标记返回格式化日期,作为与传递的格式匹配的字符串。 date
可能需要datetime/date
个对象。因此将这些链接在一起是行不通的。
我甚至不确定你是否可以在with语句中使用now
标记,但试试这个。
{% blocktrans with now "Y" as copydate %}
now
接受与date
相同的格式字符串。如果这也不起作用,我最好的办法是只传递datetime.datetime.now()
结果模板,然后使用该模板而不是now
。
{% blocktrans with my_date|date:"Y" as copydate %}