我有一个Django模板base.html:
// inside the javascript
var this_page = "{{ this_page }}";
// inside the HTML part
{% ifnotequal this_page "home" %}
...Some HTML...
{% endifnotequal %}
javascript区域内的部分不正确。实际上,Firebug在HTML标签中显示了我:
var this_page = "home";
但如果我在Console选项卡中查看GET,Firebug会显示:
var this_page = "about";
这是正确的,但调试显示'this_page'设置为'home'。 我也试过了:
{% ifnotequal this_page "home" %}
do some javascript
{% endifnotequal %}
但这也行不通。
我做错了什么?
编辑:仅当我通过链接访问此页面时才会出现此问题。如果我直接访问“关于”页面,我没有这个问题。
在'runserver'
上测试Ubuntu,Firefox 6.0.2答案 0 :(得分:4)
JavaScript是一种客户端语言。模板的HTML由服务器端的python呈现,因此您无法通过java脚本代码更改呈现变量的值。在您的情况下, this_page 呈现为html变量,var this_page = "{{ this_page }}";
定义了单独的javascript变量,并且不会更改呈现的html this_page 变量。萤火虫是正确的。
如果要动态更改呈现的HTML,可以将Ajax用于此目的。
答案 1 :(得分:0)
问题的解决方案(可能并不奇怪)与问题无关。我向错误的方向道歉。
由于我使用jquery mobile,它表现得并不像我预期的那样:在页面更改时每个ajax加载正文内容(默认情况下),而头部只加载一次。
我找到问题的解决方案here。