动态模板标签

时间:2012-03-21 13:06:01

标签: python django django-templates

我有自己的模板标签:

@register.inclusion_tag('path_to_module.html', takes_context=True)
def getmodule(context, token):
    try:
        return slow_function(params)
    except Exception, e:
        return None

这很慢。等待这个标签的模板。

我可以异步打电话给他们吗?

2 个答案:

答案 0 :(得分:2)

如果它是可缓存的(每页视图不需要唯一);然后缓存它。在模板标签中使用Django's cache API,或在模板中直接使用template fragment caching。正如@jpic所说,如果需要一段时间重新计算 - 将其传递给像Celery这样的任务队列。

如果您因任何原因需要此功能来运行每个页面视图;然后将其分成新视图,并使用JavaScript异步加载到主模板中的某个容器中。

答案 1 :(得分:0)

您可以在后台进程中执行python函数:

您可以创建一个后台任务,该任务呈现path_to_module并缓存输出。缓存应该无效时:再次在后台运行slow_function。