我的views.py函数如下:
def method(request):
objects = Model1.objects.all()
return render(request, 'manager/link.html', {'objects': object})
在我的模板link.html中有如下代码:
<script>
$('#nav').on('click', function (event) {
$('#stock_holdings').text('Loading...');
var stocks = ({{ stocks|get_list|safe }});
$.ajax({
type: "GET",
url: '{% url 'broker:load_data' %}',
data: {
'stocks': stocks,
},
dataType: 'json',
success: function (data) {
$('#stock_holdings').text(data['stocks_details']);
}
});
})
;
</script>
其中get_list是一个自定义标记,用于将查询集转换为对象列表:
@register.filter
def get_list(queryset):
return list(queryset)
然而,当代码运行时,我得到以下错误,我在浏览器调试窗口中看到这是由于:
错误:
Uncaught SyntaxError: Unexpected token '<'
导致错误的行:
var stocks = ([<broker: stock1>, <broker: stock2>]);
看起来是对象列表中的'<'导致了错误。有人能帮我处理一下吗?
list(queryset)
只会给你一个模型对象的列表。你可能想要一个字典表示的模型,这可能工作list(queryset.values())
也不建议以这种方式呈现javascript。尝试创建一个返回json的视图,并通过ajax调用来获取它。还可以将某些html标签中所需的url呈现为数据属性。