【问题标题】:Use 'now' in django blocktrans?在 django blocktrans 中使用“现在”?
【发布时间】:2011-02-08 10:19:57
【问题描述】:

我想将年份添加到 Django 块转换中 - 使用以下语法。

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

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

在这两种情况下,标签都没有展开,但块转换的其余部分渲染得很好。

【问题讨论】:

    标签: django templates internationalization


    【解决方案1】:

    唯一的方法是在 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 就是一个例子。

    【讨论】:

    • 您好 Miga,我已将此标记为最佳答案,但您能否扩展上面的答案以包含您博客中的完整示例?谢谢。
    【解决方案2】:

    从 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

    【讨论】:

      【解决方案3】:

      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 %}
      

      【讨论】:

      • 谢谢莱纳! 1. 'with now "Y" as copydate' 语法不正确,看来你需要一个模板过滤器。 2. 可行,但我不想明确地传递每个模板的日期。 3. 不能工作,因为 'blocktrans' 不允许其他块标签在里面。再次感谢您的回复。
      • @nailer 啊,谢谢,我删除了那个建议。你有没有尝试过另一个?
      • Reiner:是的,更新了我上面的评论以获取其他建议。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-11
      • 2011-03-20
      • 2013-08-12
      • 2015-06-17
      • 2010-12-21
      • 2011-06-22
      相关资源
      最近更新 更多