2013-07-01 4 views
1

변경 INDEX를 사용하여 javascript 내에서 장고 목록에 액세스하거나 반복 할 수있는 방법은 무엇입니까? 예를 들어자바 스크립트에서 Django 템플릿 변수 반복 색인 변경 액세스

:

<script> 
    for (var i=0; i < "{{ django_list|length }}".toInt(); i++) { 
     var e = "{{ django_list" + i.toString() + " }}"; // this gives an error 
     ... // it does not parse a chunked^template variable properly 
     ... 
    } 
</script> 

일부 배경. 이것은 django에 의해 렌더링되는 순수한 .js 파일입니다. 그 부분은 작동, 그냥 밖으로 substringed 장고 템플릿 var 구문을 해석하지 않습니다.

JSON 또는 비슷한 것으로 인코딩되지 않도록하는 솔루션을 선호합니다. 변수의 메서드가 필요하기 때문에 템플릿 양식을 사용하는 것이 좋습니다.

감사합니다.

+0

는 u는 각 루프를 사용할 수 없습니다 자세한 내용은

{% for item in django_list %} //Whatever you wish to do with item goes here {% endfor %} 

? – Sohaib

+0

이 예제에서는 JS가 반복을 제어하고 있습니다. –

답변

1

항상 그렇듯이 encode as JSON입니다.

{% load jsonify %} 

var data = {{ django_list|jsonify }}; 

for (...) { 
    ... 
} 
+0

아, 내 코드가 현재와 비슷하지만 인코딩을 피하는 방법이 있습니까? 템플릿에 METHODS 모델이 필요하며 JSON으로 인코딩하면 필드를 제외한 모든 것이 손실된다는 것을 의미합니다. 감사합니다. –

+0

XHR을 수행하지 않고 자바 스크립트에서 장고 코드에 액세스 할 수 없습니다. 실제로 코드가 필요하지 않은 경우 필요한 데이터로 목록이나 dict을 작성하여 인코딩하십시오. –

+0

메서드를 호출하면 충분합니다. {{some_model.some_function}}. 모델을 JSON으로 인코딩하면이 기능이 없어집니다. –

0

각 루프에 a를 사용할 수 없습니까? 링크 https://docs.djangoproject.com/en/dev/ref/templates/builtins/#for-empty

+0

예제에서 위의 작업을 수행 할 수 있는지보고 싶었습니다. 좋은 제안 비록 –

+0

우리는 색인이 필요한 상황이 있습니다. 동적으로 변경되는 글로벌 인덱스가있는 큰 JS 파일 인 경우에는 어떨까요? 우리는 JS에서 for 루프를 사용할 수 있습니다. 목록에 액세스하려면 인덱스를 사용해야합니다. –

+0

이해가 안됩니다. 내가 for 루프 내에서 말했듯이 forloop.counter는 항상 당신의 아이템을 조작 할 수있는 것을 사용합니다. 나는 무언가를 얻지 못해요? – Sohaib

관련 문제