Django模板变量在HEAD中没有执行错误的值/ Javascript

时间:2012-03-06 04:08:18

标签: python django jquery-mobile django-templates

我有一个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

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