Handle在jQuery中传递给django模板用于Ajax调用的对象列表



我的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呈现为数据属性。

最新更新