我的jquery代码在html中工作但在我在外部js文件中移动代码时无效。 我发现可能django无法呈现
{% if something %}
为什么?
答案 0 :(得分:2)
通常我们将python中的标志传递给上下文,然后将其渲染为隐藏输入或隐藏元素,最后通过jquery访问它的值:
在django,
your_flag = 'foo'
render(request, '[template]', {'flag': your_flag})
在模板中,
<input type="hidden" name="flag" value="{{ flag }}" />
在js文件中,
var flag = $("[name='flag']").val()
if (flag === 'foo') {
// then do a lot of things
}
答案 1 :(得分:0)
它在.js文件中不起作用,因为.js文件“按原样”加载,而不是处理过的模板。因此,任何模板代码都将逐字加载,并且可能会导致js文件中的解析错误。使用firebug或chrome dev工具进行检查。
如果您希望模板系统处理您的js,则需要使用{% include "subtemplate.js" %}
,但最终会使用内联代码。否则,您需要实现@ iMom0。