【发布时间】:2016-03-28 09:49:55
【问题描述】:
我一直在尝试将解析后的 JSON 数据从服务器端(在 python 中)发送到我的 Web 应用程序的客户端,在那里它可以被存储然后显示在页面上。由于某种原因,当数据到达客户端时,它的两端都有奇怪的字符。当我尝试遍历我拥有的每个数据列表时,这些字符会导致问题,因为我需要查找列表的长度。这些字符串都不能成功输出到控制台。我在 SO 和其他地方查找了许多关于从字符串中剥离 unicode 的帖子,使用 ast 库或仅使用 .encode() 函数,但到目前为止还没有解决这个问题。
由于我使用的是 Django 框架,数据在服务器端被解析并通过上下文变量传递到客户端。
这是我正在尝试做的服务器上的原始 js 代码:
var $divline = $("<div id = ticketObj></div>");
console.log("length of artist list" + {{venue_names}}.length );
for(var i = 0; i < {{venue_names}}.length; i++){
$divline.append('Artist ' + {{form_artistSelect}} + ' Location: ' {{venue_cities}}[i] ', '{{venue_region}}[i]' Venue: ' + {{venue_names}}[i]
);
}
var $resultObj = $('<div id = "inviteObj" style="margin:100px"></div>');
$resultObj.append($divline);
$resultObj.appendTo($("#results"));
这是相同代码的页面源版本:
var $divline = $("<div id = ticketObj></div>");
for(var i = 0; i < Miike%20Snow.length; i++){
$divline.append('Artist ' + Miike%20Snow[i] + ' Location: ' ['Miami', 'Miami', 'Miami'] ', '['FL', 'FL', 'FL']' Venue: ' + ['Ultra Music Festival', 'Ultra Music Festival', 'Ultra Music Festival'] );
}
var $resultObj = $('<div id = "inviteObj" style="margin:100px"></div>');
$resultObj.append($divline);
$resultObj.appendTo($("#results"));
在 python 视图中,我只是简单地获取 JSON 并像这样解析它:
data = json.load(urllib2.urlopen(url))
#titles = [ i.get("title") for i in data]
raw_dts = [i.get("datetime").encode("utf-8") for i in data]
#formatted_dts = [i.get("formatted_datetime") for i in data]
ticket_urls = [i.get("ticket_url").encode("utf-8") for i in data]
ticket_statuses = [i.get("ticket_status").encode("utf-8") for i in data]
venue_names = [i.get("venue").get("name").encode("utf-8") for i in data]
venue_cities = [i.get("venue").get("city").encode("utf-8") for i in data]
venue_region = [i.get("venue").get("region").encode("utf-8") for i in data]
无论我使用什么转换方法,一旦代码发送到客户端,我仍然会收到那些有问题的字符。
这个问题应该很容易解决,但是很可能会发生一些小问题,并且会阻碍其他工作。我应该如何解决这个问题?
编辑:
在页面的 html 中,我有一个表单,在它下面我有一个名为 container 的 div:
<form id = "search" method= 'POST' action = ''>{% csrf_token %}
{{ form|crispy }}
<input type= 'submit' value= 'Submit'>
</form><br>
<div id = "container">
然后我尝试将无序列表附加到 div 并尝试附加列表元素的列表,但由于某种原因,没有附加任何内容:
var venues = {{venues|safe}};
console.log("length of artist list" + venues.length);
var $list = $("<ul class='list-group'>");
for(var i = 0; i < venues.length; i++){
$list.append("<li class='list-group-item'>Artist {{form_artistSelect}} Location: " venues[i].city ', 'venues[i].region' Venue: ' + venues[i].name + "</ul>");
}
// var $resultObj = $('<div id = "inviteObj" style="margin:100px"></div>');
// $resultObj.append($divline);
$list.appendTo($("#container"));
【问题讨论】:
-
这里的
form_artistSelect是什么? -
form_artistSelect是用户在表单中输入的艺术家姓名。
标签: python json django parsing unicode