2012-05-20 128 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