2012-03-06 4 views
0

잘못된 값이 실행되지 않았습니다. 사실, 방화범은 HTML 탭에서 저를 보여줍니다 : 나는 콘솔 탭 내부의 GET으로 보면장고 템플릿 변수는/자바 스크립트 HEAD에 내가 장고 템플릿 base.html이

var this_page = "home"; 

하지만, 방화범은 보여줍니다

var this_page = "about"; 

정확 것이다, 그러나 디버깅은 'this_page을 보여줍니다 '은'집 '으로 설정됩니다.

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

을하지만, 또한 제대로 작동하지 않았다 나는 또한 그것을 시도.

내가 뭘 잘못하고 있니?

편집 :이 문제는 링크를 통해이 페이지에 액세스 할 때만 발생합니다. "about"페이지에 직접 액세스하면이 문제가 발생하지 않습니다.

테스트 '의 runserver'

+1

'{{this_page}} '는 "home"을 출력하지만'{% ifequal this_page "home"%} foo {% endifequal %} "는 foo를 출력하지 않는다고하니? html과 javascript가 같은 파일에 있습니까? 변수가이 템플릿으로 전달되는 것을 100 % 확신합니까? –

+0

@ 유우 지 : 예, 자바 스크립트 섹션과 HTML은 하나의 파일에 있습니다. 나는 "about"페이지에서 javascript 섹션 안에'{% ifequal this_page "home"%} foo {% endifequal %} "가 있으면"foo "가 인쇄되고 (잘못된), html 안에 섹션, 그것은 (올바른) 아닙니다. 이것이 브라우저와 더 관련이 있다고 생각합니다. 왜냐하면 이것은 의미가 없기 때문입니다. 그러나 나는 모른다. –

답변

0

문제에 대한 해결책은 질문과는 관계가 없습니다. 내가 잘못된 방향으로 물어 보았던 사과.

jquery mobile을 사용했기 때문에 예상대로 동작하지 않았습니다. 머리 부분이 한 번만로드되는 동안 페이지 내용이 변경되면 ajax별로 본문 내용 (기본값)이로드됩니다.

문제점에 대한 해결책은 here입니다.

4

자바 스크립트 우분투, 파이어 폭스 6.0.2에 클라이언트 측 언어입니다. 템플릿의 HTML은 서버 측의 파이썬에 의해 렌더링되므로 자바 스크립트 코드를 통해 렌더링 된 변수의 값을 변경할 수 없습니다. 귀하의 경우 this_page은 html 변수로 렌더링되고 var this_page = "{{ this_page }}";은 별도의 javascript 변수를 정의하며 렌더링 된 html을 변경하지 않습니다 this_page 변수. 방화범이 옳다.

렌더링 된 HTML을 동적으로 변경하려면이 목적으로 Ajax를 사용할 수 있습니다.

+0

서버 측에서 { "this_page": "about"}을 템플릿 태그에 넣으므로 왼손 쪽이 무엇이든간에 오른손은 "약"이어야합니다. 아니? –

+0

감사합니다, 당신의 대답은 올바른 방향으로 가고있었습니다. 문제는 jquery mobile을 사용하면서 거짓말을했습니다. jquery mobile은 예상대로 헤드를 다시로드하지 않았습니다. 나는 +1 할 것이지만 나는 할 수 없다. –