我正在为我的 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 %}
中执行此操作?
最佳答案
这完全取决于参数是什么,但如果它是您可以在模板渲染时从单个变量中获取的东西,只需将它作为参数添加到函数中 (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 %};
关于python - 将变量传递给自定义 Django 模板标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10669732/