我试图让django模型对象在html页面上显示。当然,当我尝试使用{{object}}时,我收到错误。
如何正确获取django数据模型并使用javascript操作属性?
网址:
('^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 }}
答案 0 :(得分:5)
在您看来:
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/。
答案 1 :(得分:0)
您必须将公司模型数据序列化为json,以便javascript能够读取它。
所以你需要有两个模型变量,公司(你现在拥有的公司)和将保存序列化数据的companies_json。
from django.core import serializers
companies_json = serializers.serialize("json", Company.objects.all())
我没有测试过这个。