簡體   English   中英

自定義Django標記和jQuery

[英]Custom Django tag & jQuery

我是Django的新手。 今天我創建了一些Django自定義標簽並不難。 但現在我想知道在我的自定義標簽定義中包含一些jQuery或一些Javascript代碼的最佳方法是什么。 在我的代碼中包含自定義庫的常規方法是什么? 例如:

{% faceboxify item %}

因此,假設它將為Facebox插件創建特定的HTML輸出。 我只是想學習一些將這個插件導入我的代碼的優雅方法。 我希望上面的定義足以滿足所有功能。 有什么辦法嗎? 我找不到任何例子。 也許我錯過了什么......

文檔中可以看出,編寫模板標記涉及編寫目標函數和渲染器。 所以我假設您當前的代碼如下所示:

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

這應該可以解決問題。 它並不像在頁面頂部包含依賴項那樣優雅,但是每次需要調用它們時都不足以包含它們。

您可以讓自定義標記為您的Javascript應用“類”值。 將您的Javascript包含為常規.js <script>導入,並讓它使用加載時功能來查找元素並根據需要對其進行操作。

因此,例如,如果您的標記創建了<div> ,則可以執行此操作:

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

您的Javascript可以這樣做:

$(function() {
  $('div.faceboxify').each(function() {
    // ... stuff to be done to your "faceboxify" divs
  });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM