2015-01-07 72 views
0

關於查找模板有很多問題,但我找不到與自定義標記相關的任何內容。Django模板:共享應用程序之間的自定義包含標記

我有下面的示意圖項目結構: / |- app1 | |- templatetags | | |- my_helpers.py | |- templates | |- my_helpers | |- my_tag.html |- app2 |- templates |- include | |- inclusion.html |- base.html

my_helpers.py一個簡單的包含標籤定義:

from django import template 
register = template.Library()  
@register.inclusion_tag('my_helpers/my_tag.html') 
def my_tag(...): 
    ... 

app2/templates/base.html看起來是這樣的:

{% load my_helpers %} 
... some markup ... 
{% my_tag %} 
{% include 'include/inclusion.html' %} 

這裏my_tag作品只是精細。但是,當我試圖使用它也在裏面「包括/ inclusion.html」(我已經添加了{% load my_helpers %}標籤有)時,出現這樣的:

django.template.base.TemplateDoesNotExist 
TemplateDoesNotExist: my_helpers/my_tag.html 

據我瞭解,它看起來只有模板在當前應用程序。但爲什麼它只發生在include d模板?是否有可能使其工作?

回答

0

爲了實現這一點,您可以利用Django模板加載器的功能。 您可以創建項目結構像below-- |- templates | |- common_templates | |- my_tag.html |- app1 | |- templatetags | | |- my_helpers.py | |- templates | |- my_helpers | |- app2 |- templates |- include | |- inclusion.html |- base.html

和你my_helpers.py可以像

from django import template 
register = template.Library()  
@register.inclusion_tag('common_templates/my_tag.html') 
def my_tag(...): 
    ... 
相關問題