2010-11-22 8 views
0

special_ads이라는 장고 배열을 자바 스크립트로 반복하려고합니다. 아이디어는 자바 으로 광고하고이를 자바 스크립트 배열에 저장할 수 있다는 것입니다. 이 객체는 특정 ad을 선택하고 추가 정보를 표시하는 데 사용됩니다.Javascript에서 Django for-loop를 사용하는 방법은 무엇입니까?

<script type="text/javascript"> 
    ADS = new slideshow(); 
    {% for ad in special_ads %} 
    ADS.add_ad(new advert(
       "{{ ad.image }}", 
       "Drie halen twee betalen", 
       "{{ ad.company.name }}", 
       "{{ ad.description }}", 
       "{{ MEDIA_URL }}{{ ad.image }}", 
       "{% thumbnail ad.image 55x55 crop %}", 
       "brown", 
       "white" 
      )); 
    {% endfor %} 
</script> 


//================================================== 
// ad object 
//================================================== 
function advert(id,title,company,description,normal_image_src,thumb_image_src,background_color,text_color) { 
    this.id = id; 
    this.title = title; 
    this.company = company; 
    this.description = description; 
    this.normal_image_src = normal_image_src; 
    this.thumb_image_src = thumb_image_src; 
    this.background_color = background_color; 
    this.text_color = text_color; 
} 

아래와 같이 페이지로드시 html에 동일한 배열이 필요하기 때문에 실제로 JSON 목록을 사용할 수 없습니다.

{% for ad in special_ads %} 
    <dd> 
    <a id="std_ad_{{ i }}" class="img"> 
     <img id="{{ ad.image }}" class="enlarge" src="{% thumbnail ad.image 55x55 crop %}" alt="{{ ad.company.name }}" onclick="ADS.display(this)"/> 
    </a> 
    </dd> 
{% endfor %} 

문제는 이것이 올바르게 작동하지 않는다는 것입니다. 페이지가 올바르게로드되지만개의 광고가 배열에 추가되지 않습니다. 또한 장고 부분이 올바르게 실행되는 것 같습니다. 페이지 소스의 결과는 다음과 같습니다.

<script type="text/javascript"> 
    ADS = new slideshow(); 

    ADS.add_ad(new advert(
       "ads/logo_copy.jpg", 
       "Drie halen twee betalen", 
       "Directdoen.nl", 
       "DirectDoen helpt u graag met schoonmaken, tuinonderhoud en klussen. Bij DirectDoen bent u voor hulp in en om uw huis aan", 
       "http://127.0.0.1:8000/media/ads/logo_copy.jpg", 
       "", 
       "brown", 
       "white" 
      )); 

    ADS.add_ad(new advert(
       "ads/Untitled-1.jpg", 
       "Drie halen twee betalen", 
       "Jouwstraat.nl", 
       "Jouwstraat.nl is een website waar buren &amp; straatgenoten met elkaar in contact kunnen 
komen en blijven. Kijk dus snel op . 
", 
       "http://127.0.0.1:8000/media/ads/Untitled-1.jpg", 
       "", 
       "brown", 
       "white" 
      )); 

    ADS.add_ad(new advert(
       "ads/AD.JPG", 
       "Drie halen twee betalen", 
       "Code 06", 
       "DirectDoen helpt u graag met schoonmaken, tuinonderhoud en klussen. Bij DirectDoen bent u voor hulp in en om uw huis aan 
", 
       "http://127.0.0.1:8000/media/ads/AD.JPG", 
       "http://127.0.0.1:8000/media/ads/AD_JPG_55x55_crop_q95.jpg", 
       "brown", 
       "white" 
      )); 

</script> 

나는 이미 많은 부분을 검색했지만이 작업을 수행하는 방법에 대한 좋은 지침서를 찾을 수 없습니다. 내 목표를 달성하는 최선의 방법을 아는 사람이 있습니까?

+0

JSON을 사용하고 싶지 않은 이유는 무엇입니까? 페이지의 다른 위치에서 기존대로 사용하려면 배열 버전을 JSON으로 만드십시오. –

+0

저는 이미 JSON을 사용해 보았습니다.하지만 실제로 작동하지 못했습니다. 어쩌면 가능할 수도 있지만 장고와 JSON에는 전문가가 아닙니다.). 나는 그것이 지금과 같은 방식으로 일하고있다. – Marcel

답변

0

Django for-loop는 분명히 문제가 아니므로 질문에 잘못된 것입니다. 광고 또는 슬라이드 쇼 클래스와 관련이 있다고 생각합니다. 당신의 js 콘솔 오류를주지 않는 ..?

+0

Ok 고맙습니다. :). 콘솔을보고 난 후에 Javascript가 끝이 아닌 리터럴에 걸려 넘어 졌다고 알았습니다. 그것은 지금 올바르게 작동합니다. – Marcel

관련 문제