我整个周末一直在努力解决这个问题。 我似乎无法弄清楚如何在Django模板中的脚本标记内加载静态图像。
如果你看一下这段代码。图像正确加载。 但我们试图通过javascript做同样的事情它不起作用。
我已经阅读了其他一些帖子,但他们都在谈论在javascript中使用变量。 并且没有人谈论{%static%}语法。
这是代码:
{% extends 'base.html' %}
{% load static %}
{% load dictionary_extras %}
{% block content %}
<img src={% static 'lol2.jpg' %}>
<canvas id="e" width="320" height="200" style="border:1px solid #d3d3d3;"></canvas>
<script language="JavaScript">
document.write('hello world.');
var canvas = document.getElementById("e");
var context = canvas.getContext("2d");
var imageObj = new Image();
imageObj.onload = function() {
context.drawImage(imageObj,0,0);
};
imageObj.src = {% static 'lol2.jpg' %};
</script>
{% endblock %}
谢谢!
答案 0 :(得分:0)
在HTML中使用Django模板标签和在模板中使用Javascript代码之间没有区别。
确保您的Javascript代码正确无误并且因为您忘记添加单引号而失败:
{% static 'lol2.jpg' %}
答案 1 :(得分:0)
非常简单,请确保标签周围有引号:
imageObj.src = "{% static 'lol2.jpg' %}";
当您使用static
标记时,它会呈现完整的网址,但为了使其成为正确的JavaScript或HTML标记,它还需要用引号括起来,例如:
<img src={% static 'lol2.jpg' %}>
渲染(取决于您的STATIC_URL设置):
<img src=/static/lol2.jpg>
应该是:
<img src="{% static 'lol2.jpg' %}">
将呈现给:
<img src="/static/lol2.jpg">