我正在开发一个 Django 项目,我需要根据用户 cookie 同意有条件地渲染和执行聊天脚本。这是我到目前为止所得到的:
在我的 Django 模板中,我有以下代码片段:
{% if page.page_type.chat_script %}
{{ page.page_type.chat_script|safe }}
{% endif %}
此代码片段负责渲染通过 Django 管理面板设置的聊天脚本(类似于聊天脚本代码)。
但是,我只希望在用户接受所有 cookie 时执行此脚本。我已经有一个单独的 JavaScript 文件 (cookies_configuration.js),用于处理 cookie 同意并在同意后将各种脚本注入头部或主体(当我将它与放置在其他文件中的正常不同脚本一起使用时,它工作得很好)。
这是注射外观的简化示例(我的代码中的一小段):
'injections': [
{
'location': 'head',
'code': 'initGoogleAnalytics()'
},
]
现在,我想对聊天脚本做类似的事情 - 本质上将 Django 模板片段包装在像 initChatScript() 这样的函数中,然后仅在授予 cookie 同意后调用此函数。
但是,我不确定如何在 JavaScript 函数中动态包含并执行此 Django 模板代码。
我已经尝试过做这样的事情:
<script async type="text/javascript">
function initChatScript() {
{% if page.page_type.chat_script %}
{{ page.page_type.chat_script|safe }}
{% endif %}
}
</script>
但显然它根本不起作用。
实现这一目标的最佳方法是什么? **有没有办法有条件地渲染模板代码或将其注入 JavaScript 函数? **或者我应该完全采用不同的方法(也许需要更改业务逻辑并用普通代码(可能是纯脚本)替换 django 标签)?
任何帮助或指导将不胜感激!
要使用 Django 标签将聊天脚本(或任何 JavaScript)与 Django 模板连接起来,您需要将动态数据从 Django 后端传递到模板中的 JavaScript 代码