2014-02-21 33 views
2

什么我希望做的是在Django包包模板,可以在开发者页面上简单地使用是否有可能有Django的自定义模板标签加载包其他模板

{% load app_tags %} 

此插入为自定义方法寻找值并返回值的作品。我想要做的仅仅是返回一个与应用程序打包在一起的模板。

{{ custom_template }} 

所以问题归结到我怎么有它安装我的应用程序加载我的应用程序标签,并调用标签方法,包括从应用程序模板的项目。

感谢您的回复。

+1

最有趣的部分是如何将打包在app_tags模板的价值,我觉得你应该app_tags使用标记方法@ register.inclusion_tag( template_packaged_name),现在您的template_packaged_name将包含{{custom_template}}。 – drabo2005

+0

谢谢drabo2005我会按照你的意见。 –

回答

1

yup!在app_tags.py中创建一个包含标记,然后调用它!

他们是伟大的代码重用(Django的块和沿{%包括...%}模板标签,当然)

参考:https://docs.djangoproject.com/en/dev/howto/custom-template-tags/#inclusion-tags

# app_tags.py 
from django import template 
register = template.Library() 

@register.inclusion_tag("templates/myappname/greeting.html") 
def greet(name, end="!!!"): 
    return { 'name': name, 'end': end } 

{# templates/myappname/greeting.html #} 

<h1> What's up {{ name }}{{ end }} </h1> 

然后调用这个,你会使用{%%},双括号符号eg {{custom_template}}真的是只用于显示一个变量

{% load app_tags %} 

{% for person in people_to_greet %} 
    {% greet person %} 
{% end %} 

<h3> cool greetings above^</h3> 
+0

谢谢大卫!真棒的答案。我完全错过了文档。 –