2012-03-06 7 views
0

を実行していない私は、Djangoのテンプレートbase.htmlを持っている:Djangoのテンプレート変数が誤った値/ HEAD内のJavascript

// inside the javascript 
var this_page = "{{ this_page }}"; 

// inside the HTML part 
{% ifnotequal this_page "home" %} 
...Some HTML... 
{% endifnotequal %} 

javascriptのエリア内の一部が正しくありません。

var this_page = "home"; 

が、私はコンソール]タブ内のGETに見れば、Firebugのは示しています:実際には、Firebugのは、HTMLタブで私を示して正しいことと思われる

var this_page = "about"; 

が、デバッグがその「this_pageを示し'は' home 'に設定されています。 私もそれを試してみました:

{% ifnotequal this_page "home" %} 
do some javascript 
{% endifnotequal %} 

が、それはまた、正常に動作しませんでした。

私は間違っていますか?

EDIT:この問題は、リンク経由でこのページにアクセスした場合にのみ発生します。 「約」ページに直接アクセスすると、この問題は発生しません。 Ubuntuの上

テストは、Firefox 6.0.2、 'そのrunserver' に関する

+1

'{{this_page}}'は "home"を出力しますが、 '{%ifequal this_page" home "%} foo {%endifequal%}"はfooを出力しませんか? HTMLとjavascriptは同じファイルにありますか?これらのテンプレートに変数が渡されていることを100%確信していますか? –

+0

@Yuji:はい、javascriptセクションとhtmlは1つのファイルにあります。私は、javascriptセクションの中に '{if ifequal this_page" home "%} foo {%endifequal%}"がある場合、 "about"ページで "foo"が表示されている(間違っている)それは正しくありません。私は、これは理にかなっていないので、これはブラウザともっと関係があると思います。しかし、私は分かりません。 –

答えて

0

問題の解決策は、(おそらく驚くことではありませんが)質問とは関係ありませんでした。私が間違った方向に尋ねた謝罪。

jquery mobileを使用しているので、期待通りに動作しませんでした。ページの変更時にajaxごとに本文の内容(デフォルトあたり)が読み込まれ、ヘッド部分は1回だけ読み込まれます。

問題の解決方法は私が見つけたhereです。

4

JavaScriptはクライアント側の言語です。テンプレートのHTMLはサーバー側のPythonによってレンダリングされるので、レンダリングされた変数の値をJavaスクリプトコードで変更することはできません。あなたの場合this_pageはhtml変数に変換され、var this_page = "{{ this_page }}";は別のjavascript変数を定義し、レンダリングされたhtmlを変更しませんthis_page変数。だから火かき棒は正しい。

レンダリングされたHTMLを動的に変更する場合は、この目的でAjaxを使用できます。

+0

サーバ側では{"this_page": "about"}をテンプレートタグに入れています。したがって、左手側がどのようなものであれ、右手は「約」でなければなりません。いいえ? –

+0

ありがとうございました、あなたの答えは正しい方向に進んでいました。問題は私が期待したように頭をリロードしなかったjquery mobileの使用に嘘をついた。私は+1を与えるだろうが、私はできません。 –