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 回答