2015-11-13 127 views
1

我有一個django CMS頁面,我希望將呈現的html製作成json對象(將CMS html轉儲爲JSON),這可能嗎?我想它是這個樣子:作爲json呈現django cms頁面

enter image description here

我怎麼會去嗎?

所以經過一些挖掘,這是我管理的。

CMS有一個views.py,它有一個函數「details(request,slug)」 我用這個方法渲染所需的頁面,通過傳遞我需要渲染的頁面的slu got,得到響應並將其放入到一個JSON對象並返回這個。

from cms.views import details 

def index(request, topic): 

if topic == 'home': 
    template = details(request, '') 
else: 
    template = details(request, topic) 

content = '' 
if hasattr(template, 'render'): 
    # TemplateResponse must call render() before we can get the content 
    content = template.render().content 
else: 
    # HttpResponse does not have a render() method 
    content = template.content 

# Send JSON response 
return JsonResponse({ 
    'createdAt': datetime.datetime.now(), 
    'content': content 
}) 

還有什麼比這更好的方法嗎?

+0

你想把你的HTML代碼轉儲到JSON中嗎?你怎麼想象這樣的輸出? – Nhor

+0

[鏈接](http://imgur.com/FHQ87M0) 像這樣的 – at14

回答

1

我認爲這應該相當容易。而不是從模板返回呈現的輸出,而是將其放入字典中。然後根據您的目的,只需from json import dumpsdumpdump(dictionary)/dumps(dictionary)dumps給你一個字符串。 dump給你更有趣的東西。

+0

很好的答案,但請詳細說明 – Pynchia

+0

但是,這不會只是一個插件? 我的頁面有幾個插件,所有這些插件呈現自己的模板,並形成一個頁面。我需要整個頁面(由所有插件的所有html組成)作爲json對象。如果有幫助,請檢查我已添加的鏈接 [鏈接](http://imgur.com/FHQ87M0) – at14

+0

IIRC,Django中的視圖方法在調用它時會返回一些內容。所以當有人得到一個頁面時,你的程序會做一些事情,然後返回一些東西。不管有多少插件,它返回的是我相信的HTML,因此不要將其返回,而要將其存儲到變量中。 或者......至少在你變得更加花哨之前給出一個結局。 – NotAnAmbiTurner