我在自己的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 %}
中执行此操作?
答案 0 :(得分:6)
这取决于参数究竟是什么,但是如果它是模板渲染时可以在单个变量中获得的东西,只需将其作为参数添加到函数(see the docs for 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 %};