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

これでうまくいくはずです。ページの上部に依存関係を含めるほど洗練されていませんが、呼び出す必要があるたびに依存関係を含める必要はありません。

于 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 に答える