django自定义标签与模板块?

问题描述:

我刚开始学习django中的自定义标签,并想知道是否有一项功能允许将数据注入,就好像它们是块/标签一样。django自定义标签与模板块?

真正的问题是这样的,标签工作得很好,但可以说我的标签是一些HTML和JavaScript,这是否意味着我必须调用两个标签函数并将它们注入到页面中。看起来解决方案似乎是在填充块的时候使用模板,并以这种方式追加数据,但这不能完成自定义标签需要做的事情。那么你如何解决这样的问题呢?

+0

您可能不得不让我们知道您正在尝试解决的确切问题“注入HTML和JavaScript”并不值得继续。 – 2010-01-06 12:59:45

+0

对不起,我们假设我的自定义标记是列出页面的分页功能。当用户点击页码时,页面会执行一个重新填充数据主体的ajax请求。现在,如果我想在另一个页面上使用相同的分页功能,我需要有两个自定义标签,将html和javascript放在页面上。有没有更好的方法来做到这一点?再次提到几乎像一个模板,像solutoin,你可以将javascript附加到某个块并将html附加到另一个块? – killerbarney 2010-01-06 13:03:04

你需要使用Django inclusion tags

逸岸,Django管理本身使用这些标签非常类似的目的。

从文档,定义这样的功能,这是意识到它需要

@register.inclusion_tag('results.html') 
def show_results(poll): 
    choices = poll.choice_set.all() 
    return {'choices': choices} 

而且模板来呈现模板:

<ul> 
{% for choice in choices %} 
    <li> {{ choice }} </li> 
{% endfor %} 
</ul> 

然后你插入一个标记,如下:

{% show_results poll %} 

这将提供:

<ul> 
    <li>First choice</li> 
    <li>Second choice</li> 
    <li>Third choice</li> 
</ul> 
+0

嗨,感谢您的回复:) 你知道些什么,最初我想把所有的javascript集中到头上,这就是为什么我提到我想在页面上的两个不同位置加载脚本。考虑一下,我想这真的没关系,在哪里的JavaScript是,对吗?如果每个项目都有自己的脚本和onload函数,会不会缓慢下来?如果没有,那么用html加载javascript可能不会是一件坏事。 – killerbarney 2010-01-06 19:50:55

+0

您可以加载标题中的js,并在加载的html中忘记它;或者您可以在每个块中加载带有html的js。根据每页显示的页数和次数,您必须进行折衷。 – 2010-01-07 07:59:17