简体   繁体   中英

is it possible to use javascript to get data from django models db?

I am trying to get the django model object to show on a html page. Of course when I tried to use {{ object }}, I get an error.

How do I properly get the django data model and manipulate the attributes using javascript?

the url:

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

the view:

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

the 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 %}

the js:

var tmp = {{ companies }}

In your view:

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)

In template:

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

This is only for getting your data models into JS. For manipulating them, you should create some views that will get called from JS (by AJAX). They should probably return JSON. Check out http://djangosnippets.org/snippets/622/ or http://djangosnippets.org/snippets/2102/ on how to simply return only JSON from a view.

You must serialize your companies model data to json, so javascript will be able to read it.

So you'll need to have two model variables, companies (the one you have right now) and companies_json which will hold the serialized data.

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

I haven't tested this.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM