【问题标题】:In Django, is it Bad to Import and use Template Tags outside a Template?在 Django 中,在模板之外导入和使用模板标签是不是很糟糕?
【发布时间】:2016-06-23 09:32:11
【问题描述】:

我正在使用 Django 1.9 和 Django Rest Framework。

在 Django 中,有一个名为 timesince() 的方法,它在名为 humanize 的模板标签中使用,在名为“naturaltime”的方法中使用。

自然时间方法返回我想要的(格式化的日期)。 Timesince 在应用程序中不是那么有用。

无论如何,我在 DRF 的 serializer.py 文件中,我使用以下方法导入了该方法:

from django.contrib.humanize.templatetags.humanize import naturaltime

既然方法顶部有注解@register.filter,templatetag文件顶部有register = template.Library(),会不会导致当我不是从模板导入时出现问题?

【问题讨论】:

    标签: django django-rest-framework


    【解决方案1】:

    不,它不应该引起问题。

    您可以将该函数用作常规 python 函数。 @register.filter 是一个装饰器,将函数装饰filter,而register = template.Library() 使其可用作模板标签。

    但是,也可以在纯 python 代码中使用正确的签名来调用它。

    所以你可以这样做:

    from django.contrib.humanize.templatetags.humanize import naturaltime
    from datetime import datetime as dt
    
    my_human_time = naturaltime(dt.now())
    print(my_human_time)
    # 'now'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-16
      • 2014-03-20
      • 2018-01-20
      • 2011-09-20
      • 2011-10-06
      • 2013-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多