javascript - 使用 Javascript 和 Django 模板动态加载 HTML 图像

标签 javascript python html django

我尝试在 django 模板中使用 javascript 加载特定图像,但似乎遇到了基于 django 方式的问题code> 标签已格式化。

我在 img 标记中有一个标准的 django 静态资源源,如下所示:

{% load static %}
<img src="{% static 'img/folder/logo1.svg' %}" id="orgLogo" alt="Logo" height="100px"/>

我正在页面下方显示来自 django 的数据,如下所示:

<a id="orgName" class="side_nav_item">{{ thing.org_name }}</a>

我想做的是根据 django 内 thing.org 的值更改 img src 标签。

我最初认为jquery将是最好的选择,但它似乎与django标签配合得不好:

$(document).on('load', '#orgName', function(){
    $('img').attr('src','{% static 'img/folder/''+$('#orgLogo').val()+' %}');
});​​​​​​

由于 django 语法中需要使用单引号,我收到错误。

在我能够了解此 javascript 函数的基础知识后,我计划使用 javascript switch 语句来测试特定值并分配一个图像(例如 logo1.svg、logo2.svg 等)到每个值(例如 org1、org2、org2)thing.org 可以加载(它是一组不长且预定义的值)不太可能改变)。

关于如何解决这个问题有什么建议吗?

最佳答案

您不能将在后端、服务器(模板标记)上评估的内容与在前端、最终用户浏览器 (javascript) 内评估的内容结合起来:您的 { 将 HTML 文档发送到浏览器之前,需要由 Django 评估 % static %} 模板标记。您尝试将 javascript 求值变量混合到 {% static %} 标记中,但这没有意义,因为它们是在完全不同的时间点(并且在不同的计算机上)求值的。

当然,您可以使用模板标签创建字符串,然后在 javascript 中使用它:

var baseURL = "{% static 'img/folder/' %}"
$(document).on('load', '#orgName', function(){
    $('img').attr('src', baseURL + $('#orgLogo').val());
});​​​​​​

如果您在浏览器开发人员工具中查看 HTML 源文件,您将看到以下内容:

var baseURL = "https://mycdn.net/static/img/folder/"  // or whatever your STATIC_URL is

关于javascript - 使用 Javascript 和 Django 模板动态加载 HTML 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52430558/

相关文章:

javascript - 隐藏表格 当其主体中没有元素时

javascript - 我怎样才能把我的 if else 变成三元

javascript - 如何通过单击图像按钮打开图像

python - 对列表类变量进行映射操作

javascript - 由于 JavaScript,iPhone 将逗号添加到输入数字字段

javascript - 如何在 td 上应用 css,其中每列的 css 类在 angular js 中是分开的

python - 横向排列十六进制

python - 如何将图像显示为使用 wxPython 管理的颜色?

jquery - 无法确定在 div 内表内的 td 上使用什么选择器

javascript - iframe 无法与表单中的标签一起使用