在Django中,导入和使用模板外的模板标签是不是很糟糕吗?

时间:2016-06-23 09:32:12

标签: django django-rest-framework

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

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

自然时间方法返回我想要的(一个相当格式化的日期)。 Timesince在应用程序中不可用。

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

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

由于方法顶部有注释 @register.filter ,模板标签文件顶部有 register = template.Library(),它是否会导致我不是从模板导入的问题?

1 个答案:

答案 0 :(得分:0)

不,它不应该导致问题。

您可以将该函数用作常规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'