3

djangoモデルオブジェクトをhtmlページに表示しようとしています。もちろん、{{object}}を使おうとすると、エラーが発生します。

djangoデータモデルを適切に取得し、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

2 に答える 2

11

あなたの見解では:

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を返すはずです。https://dev.to/brian101co/how-to-return-a-json-response-in-django-genまたはhttps://simpleisbetterthancomplex.com/tutorial/2016/07/27/how-to-を確認して くださいビューからJSONのみを返す方法についてはreturn-json-encoded-response.html 。

于 2012-04-28T02:43:45.533 に答える
1

会社のモデルデータをjsonにシリアル化して、javascriptが読み取れるようにする必要があります。

したがって、2つのモデル変数、companys(現在持っているもの)と、シリアル化されたデータを保持するcompanys_jsonが必要になります。

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

私はこれをテストしていません。

于 2012-04-27T22:54:58.620 に答える