3

我是 Django 的新手。今天我创建了一些 Django 自定义标签,这并不难。但现在我想知道在我的自定义标签定义中包含一些 jQuery 或一些 Javascript 代码的最佳方法是什么。将自定义库包含到我的代码中的常规方法是什么?例如:

{% faceboxify item %}

所以假设它会为 Facebox 插件创建一个特定的 HTML 输出。我只想学习一些优雅的方法来将此插件导入我的代码。我希望上述定义足以满足所有功能。有什么办法吗?我找不到任何例子。也许我错过了一些东西..

4

2 回答 2

2

文档中您可以看到编写模板标签涉及编写目标函数和渲染器。所以我假设您当前的代码如下所示:

def my_tag(parser, token):
  # ... some code
  return MyNode(...)

class MyNode(template.Node):
  def render(self, context):
     # here is where you write your <script> tags

所以基本上你要做的就是在上下文下挂一个变量,这样你就可以知道对于那个特定的请求,你是否已经包含了加载所有需要的脚本的代码。

class MyNode(template.Node):
  def render(self, context):
     if '_included_faceboxify_deps' in context:
       # render your <script> dependency includes
       context['_included_faceboxify_deps'] = True
     # render your <script>s that are specific for this call

This should do the trick. It's not as elegant as including your dependencies in the top of the page, but it's enough not to include them for every time you need to call them.

于 2010-06-13T16:04:41.713 回答
0

您可以让您的自定义标签为您的 Javascript 应用“类”值来查找。将您的 Javascript 作为常规 .js<script>导入包含在内,并让它使用加载时函数来查找您的元素并在必要时对其进行操作。

因此,例如,如果您的标签创建一个<div>,您可以让它这样做:

<div class='faceboxify'>
  <!-- whatever -->
</div>

然后您的 Javascript 可以执行此操作:

$(function() {
  $('div.faceboxify').each(function() {
    // ... stuff to be done to your "faceboxify" divs
  });
});
于 2010-06-13T15:45:10.590 回答