【发布时间】:2019-09-28 06:50:56
【问题描述】:
我有一个 Django 模板过滤器来根据传递的键检索字典项。
{% with data=dict_data|get_data:key %}
我已经单独制作了一个返回这些项目的 template_tag.py 文件。
def get_domain_data(dictionary, key):
p = ast.literal_eval(dictionary)
return p[key]
# data being returned successfully
问题在于在过滤函数中传递键的动态值。
<script>
var key_val = $('#input_id').val();
'{% with data=dict_data|get_domain_data:"'+key_val+'" %}'; //encountering error here
// rest of the code
'{% endwith %}';
</script>
如果我硬编码一个字符串值,整个操作就可以工作,但我无法在 Django {% filter %} 函数中使用 JavaScript 变量。
【问题讨论】:
-
模板代码在javascript之前运行。这是不可避免的,因为页面是从服务器上的模板呈现然后发送到客户端的。一旦页面在客户端上准备好,客户端就会运行 javascript。所以你不能像那样使用 javascript 与模板交互。
-
您需要创建一个 js 回调来联系网站并使用 xhr 或其他系统获取所需的数据。
标签: javascript django django-template-filters