Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django模板变量的值错误/HEAD中的Javascript未执行_Python_Django_Jquery Mobile_Django Templates - Fatal编程技术网

Python Django模板变量的值错误/HEAD中的Javascript未执行

Python Django模板变量的值错误/HEAD中的Javascript未执行,python,django,jquery-mobile,django-templates,Python,Django,Jquery Mobile,Django Templates,我有一个Django template 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 = "

我有一个Django template 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";
但如果我查看“进入控制台”选项卡,Firebug会显示:

var this_page = "about";
这是正确的,但调试显示“this_page”设置为“home”。 我也试过:

{% ifnotequal this_page "home" %}
do some javascript
{% endifnotequal %}
但这也没有起到正确的作用

我做错了什么

编辑:此问题仅在我通过链接访问此页面时发生。如果我直接访问“关于”页面,我没有这个问题


在Ubuntu、Firefox 6.0.2、runserver上测试JavaScript是一种客户端语言。模板的HTML由服务器端的python呈现,因此不能通过java脚本代码更改呈现变量的值。在您的例子中,此页面呈现为html变量,并且
var this\u页面=“{{this\u页面}}”
定义一个单独的javascript变量,并且不会更改呈现的html此页面变量。所以firebug是正确的


如果要动态更改呈现的HTML,可以使用Ajax实现此目的。

JavaScript是一种客户端语言。模板的HTML由服务器端的python呈现,因此不能通过java脚本代码更改呈现变量的值。在您的例子中,此页面呈现为html变量,并且
var this\u页面=“{{this\u页面}}”
定义一个单独的javascript变量,并且不会更改呈现的html此页面变量。所以firebug是正确的


如果要动态更改呈现的HTML,可以使用Ajax实现此目的。

问题的解决方案(也许并不奇怪)与问题无关。抱歉我问错了方向

由于我使用jquerymobile,它的行为与我预期的不一样:主体内容(默认)在页面更改时按照ajax加载,而头部部分只加载一次


我找到的问题的解决办法。

问题的解决办法(也许并不奇怪)与问题无关。抱歉我问错了方向

由于我使用jquerymobile,它的行为与我预期的不一样:主体内容(默认)在页面更改时按照ajax加载,而头部部分只加载一次


我找到的问题的解决方案。

你是说
{{{this_page}}
输出“home”,但
{%ifequal this_page“home”%%}foo{%endifequal%}
不打印foo?html和javascript在同一个文件中吗?您是否100%确定变量正在传递到这些模板中?@Yuji:是的,javascript部分和html在一个文件中。我发现在“关于”-页面上,如果我在javascript部分中有
{%ifequal this_page“home”%}foo{%endifequal%}
,则会打印“foo”(不正确),而在html部分中,则不会打印(正确)。我认为,这与浏览器有更多的关系,因为这毫无意义。但是我不知道。你是说
{{{this_page}}
输出“home”,但是
{%ifequal this_page“home”%%}foo{%endifequal%}
不打印foo?html和javascript在同一个文件中吗?您是否100%确定变量正在传递到这些模板中?@Yuji:是的,javascript部分和html在一个文件中。我发现在“关于”-页面上,如果我在javascript部分中有
{%ifequal this_page“home”%}foo{%endifequal%}
,则会打印“foo”(不正确),而在html部分中,则不会打印(正确)。我认为,这与浏览器有更多的关系,因为这毫无意义。但是我不知道,在服务器端,我把{“this_page”:“about”}放在模板标签中,所以不管左边是什么,右边应该是“about”。没有?谢谢,你的回答是正确的。问题在于使用jquery mobile,它没有像我预期的那样重新加载头部。在服务器端,我把{“this_page”:“about”}放在模板标签中,所以不管左边是什么,右边都应该是“about”。没有?谢谢,你的回答是正确的。问题在于使用jquery mobile,它没有像我预期的那样重新加载头部。我会给+1,但我不能。