ng-init在找到你的时候会给出解析错误。从Django收到的数据

时间:2016-02-15 18:13:54

标签: python angularjs django unicode angularjs-ng-init

我正在从Django后端向模板发送一些数据,我在其中使用Angular与ng-repeatng-init来循环数据并在屏幕上打印。

这就是我用Python2和Django获取后端数据的方法:

country = "Global"
songs = []

for pl in pls:
    song_dict  = {}
    song_dict['title'] = pl.songs.title
    # other fields...
    songs.append(song_dict)

context = {}
context['country'] = country
context['songs'] = songs

return render(request, 'spotify_list/index.html', context)

在模板中,我尝试ng-init这样来访问从Django收到的数据:

<div ng-app="instantSearch" ng-init="items={{songs}}">

但看起来ng-init并不像每个键和值(u')之前的{u'title':u'Test1'}, {u'title':u'Test2'}。这是我得到的错误:

Error: [$parse:syntax] http://errors.angularjs.org/1.4.9/$parse/syntax?p0='title'&p1=is%20unexpected%2C%20expecting%20%5B%3A%5D&p2=10&p3=items%3D%5B%7Bu'title'%3Au'Prueba1'%7D%2C%20%7Bu'title'%3Au'Prueba2'%7D%2C%20%7Bu'title'%3Au'Prueba3'%7D%5D&p4='title'%3Au'Prueba1'%7D%2C%20%7Bu'title'%3Au'Prueba2'%7D%2C%20%7Bu'title'%3Au'Prueba3'%7D%5D
    at Error (native)
    at https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular.min.js:6:416
    at Object.s.throwError (https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular.min.js:213:32)
    at Object.s.consume (https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular.min.js:213:207)
    at Object.s.object (https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular.min.js:212:370)
    at Object.s.primary (https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular.min.js:209:335)
    at Object.s.unary (https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular.min.js:209:174)
    at Object.s.multiplicative (https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular.min.js:208:434)
    at Object.s.additive (https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular.min.js:208:261)
    at Object.s.relational (https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular.min.js:208:96) <div ng-app="instantSearch" ng-init="items=[{u'title':u'Prueba1'}, {u'title':u'Prueba2'}, {u'title':u'Prueba3'}]" class="ng-scope">

我知道如果我可以从数据中删除u',那么它会很好用。像这样:

<div ng-app="instantSearch" ng-init="items=[{'title':'Prueba1'}, {'title':'Prueba2'}, {'title':'Prueba3'}]">

所以我的问题是解决这个问题的最佳方法是什么?

我应该在Django方面以不同方式处理数据吗?怎么样?

我应该在正面处理不同的数据吗?怎么样?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

u是python指定数据类型为unicode的方式。解决方案可能是将您的数据转储为json

e.g。

<div ng-app="instantSearch" ng-init="items={{songs | json}}">

然后你需要{django一侧的define and register过滤器使用json.dumps将数据转储到json。如果我正确阅读文档,它看起来像:

from django import template
import json
register = template.Library()
register.filter('json', json.dumps)