2

django アプリケーションにオートコンプリート機能を追加しています。

HTML

<script type="text/javascript"> 
            var a = {% get_fields_task_name %}
            $( "#auto_task_name" ).autocomplete({
              source: a           
            });

見る

def get_fields_task_name():    
    task = Task.objects.all()    
    output = []

    for e in task:
        output.append(e.name)

    x = json.dumps(output)
    return x
get_fields_task_name = register.simple_tag(get_fields_task_name)

パラメータを に渡す必要があります。get_fields_task_nameの代わりにテンプレートでこれを行うにはどうすればよい{% get_fields_task_name %}ですか?

4

1 に答える 1

8

これは、パラメーターが何であるかによって異なりますが、テンプレートのレンダリング時に単一の変数で取得できるものである場合は、関数にパラメーターとして追加するだけです (のドキュメントを参照してくださいsimple_tag)。

例えば:

@register.simple_tag
def get_fields_task_name(kind):
    tasks = Task.objects.filter(kind=kind)
    return json.dumps([e.name for e in tasks])

(リスト内包表記を使用して関数本体を短く簡潔にし、より優れたデコレータ構文も使用します)。

次に、テンプレートの関連する行を次のように変更できます。

var a = {% get_fields_task_name some_variable.kind %};
于 2012-05-20T00:55:32.667 に答える