Django模板标签是否被缓存?

时间:2010-06-07 00:53:18

标签: django caching django-templates

我已经完成了编写自定义模板标记(痛苦)的过程,以便在Django中使用。它被注册为inclusion_tag,以便呈现模板。但是,一旦我尝试更改某些内容,此标记就会中断。

我已经尝试更改参数的数量,并在调用时相应地更改参数。很明显,新的标签代码没有被加载,因为抛出的错误表明参数的数量不匹配,而且很明显它正在尝试调用旧函数。

如果我尝试更改正在呈现的模板的名称并相应地更改磁盘上模板的名称,则会出现同样的问题。它继续尝试调用旧模板。我已经尝试清除旧的.pyc文件而没有运气。

总体而言,系统的行为似乎是缓存模板标签,可能是由于register命令。我已经挖掘了无数的线索试图找出是否如此,但所有人都可以找到James Bennett说明here register没有做任何事情。请帮忙!

3 个答案:

答案 0 :(得分:2)

  

我已经完成了编写用于Django

的自定义模板标记的(痛苦)过程

我同意在django中编写模板标签的过程比它需要的更精细。

但是让我指出一些第三方应用程序,安装时,模板标签只是另一个python函数(或类)。

http://github.com/alex/django-templatetag-sugar

http://github.com/codysoyland/django-template-repl

答案 1 :(得分:2)

首先,我无法想象包含标签的复杂程度。从头开始编写一个完全自定义的标签,是的:这很复杂。但是inclusion tags只是三行代码和一个模板 - 那有什么复杂的呢?

其次,Django项目中的所有 Python代码由服务器[*]加载一次,并一直保留到重新启动。开发服务器通常会检测更改并重新启动以重新加载代码,但这并不总是有效。您应该养成检查控制台以查看它是否重新启动的习惯,并在必要时手动执行。请注意,这与缓存没有任何关系。

[*]严格来说,每个进程一次,但dev服务器无论如何都是单进程。

答案 2 :(得分:1)

如果有其他人遇到此问题:确切的缓存机制尚不清楚,但重新启动django dev服务器可以解决问题。