2012-04-27 3 views
2

html 페이지에 표시 할 장고 모델 객체를 얻으려고합니다. 물론 {{object}}를 사용하려고하면 오류가 발생합니다.자바 스크립트를 사용하여 장고 모델 데이터베이스에서 데이터를 가져올 수 있습니까?

어떻게 제대로 장고 데이터 모델을 얻고 javascript를 사용하여 속성을 조작합니까?

의 URL :

('^all_companies$', 'companies.views.all_companies') 

보기 :

def all_companies(request): 
    companies = Company.objects.all().order_by('id')[:5]; 
    return direct_to_template(request, 'all_companies.html', {'companies': companies}); 

html로 :

{% block sidebar %} 
    <div id="sidebar"> 
     <!-- like google maps, short list of company info --> 
     <ul> 
      {% for comp in companies %} 
       <li>{{ comp }}</li>     
      {% endfor %} 
     </ul> 
    </div> 
{% endblock %} 

JS :

var tmp = {{ companies }} 

답변

4

:

from django.core import serializers 
json_serializer = serializers.get_serializer("json")() 
companies = json_serializer.serialize(Company.objects.all().order_by('id')[:5], ensure_ascii=False) 

템플릿에서 :

var companies = '{{ companies|escapejs }}'; 

이 단지 JS로 데이터 모델을 얻기위한 것입니다. 그것들을 조작하기 위해서는 JS (AJAX에 의해)로부터 호출 될 뷰를 생성해야한다. JSON을 반환해야합니다. 보기에서 JSON 만 반환하는 방법에 대해서는 http://djangosnippets.org/snippets/622/ 또는 http://djangosnippets.org/snippets/2102/을 확인하십시오.

+0

정보를 주셔서 감사합니다. 이제 어떻게 js에서 뷰를 호출합니까? – iCodeLikeImDrunk

+0

jQuery를 사용하는 경우 : http://api.jquery.com/jQuery.getJSON/ – frnhr

0

회사 모델 데이터를 json으로 직렬화해야합니다. 그러면 자바 스크립트가이 데이터를 읽을 수 있습니다.

따라서 두 개의 모델 변수, 즉 현재 가지고있는 회사와 직렬화 된 데이터를 보유 할 companies_json이 필요합니다.

from django.core import serializers 
companies_json = serializers.serialize("json", Company.objects.all()) 

아직 테스트하지 않았습니다. 보기에

관련 문제