2012-05-20 92 views
1

我正在从mysql longtext字段获取数据。它可以包含新行。 将这些数据传递给模板,我将这个longtext数据分配给一个javascript变量。我现在得到的问题是,它会抱怨unterminated string literal如何用包含多行的django模板变量分配javascript变量?

这是因为它试图以这种方式

$("#id_review").val("kokokoeoarkgeorkgeorkgeorkg 
er 
g 
gerag 
earg 
ea 
gae 
gr 
er 
gea 
g 
ear 
ge 
gae 
rg 
eagr 

kok") 

我试着写一个自定义过滤器,将增加"+到每一行的末尾分配数据,但它没有工作了太清楚了。所以我想知道这个问题能够以某种方式解决吗?

我的上一个过滤器

@register.filter 
def escapenewline(value): 
    return value.replace('\n', '\"+') 

回答

3

尝试使用JSON编码器来创建你可以在你的JavaScript代码使用有效的字符串。

从快速搜索Django似乎没有模板过滤器,但它不应该太难添加。假设你的JSON过滤器被称为tojson模板的代码是这样的:

$("#id_review").val({{ whatever|tojson }}); 

这里的过滤器可以什么样子:

import json 
@register.filter 
def tojson(value): 
    return json.dumps(value) 
+0

我更新我的问题与我尝试过滤网。或者,也许我应该直接将视图中的对象变成JSON? – starcorn

+0

不要试图弄乱换行符。使用'json.dumps()'创建JSON。这将确保*所有*字符将以任何必要的方式进行处理,以创建有效的JavaScript值。 – ThiefMaster