【问题标题】:Rendering django cms page as json将 django cms 页面渲染为 json
【发布时间】:2016-02-14 16:57:16
【问题描述】:

我有一个 django CMS 页面,我希望将渲染的 html 制作成一个 json 对象(将 CMS html 转储为 JSON),这可能吗?我希望它看起来像这样:

我该怎么做?

所以经过一番挖掘,这就是我所管理的。

CMS 有一个views.py,它有一个函数“details(request, slug)” 我使用这种方法来渲染所需的页面,通过传递我需要渲染的页面的 slug ,获取响应并将其放入 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 
})

还有更好的方法吗?

【问题讨论】:

  • 您想将您的 HTML 代码转储为 JSON 吗?你如何想象这样的输出?
  • link 这样的事情

标签: python json django django-cms


【解决方案1】:

我认为这应该相当容易。不要从模板返回渲染的输出,而是将其放入字典中。然后只需 from json import dumpsdumpdump(dictionary) / dumps(dictionary) 取决于您的目的。 dumps 给你一个字符串。 dump 给你更高级的东西。

【讨论】:

  • 但这不是只针对一个插件吗?我的页面有几个插件,所有这些插件都呈现自己的模板,并形成一个页面。我需要将整个页面(由所有插件中的所有 html 组成)作为 json 对象。如果有帮助,请检查我添加的链接link
  • IIRC,你在 Django 中的 view 方法在被调用时会返回一些东西。所以当有人得到一个页面时,你的程序会做一些事情,然后它会返回一些东西。不管你有多少插件,它返回的是我相信的 HTML,所以不要返回它,而是将它存储到一个变量中。或者......至少在你变得更花哨之前试一试。
  • "something fancier" - dump 只是将完全相同的字符串表示形式写入文件(或类似文件的对象)。
猜你喜欢
  • 1970-01-01
  • 2011-06-28
  • 2013-08-25
  • 2011-04-10
  • 2020-07-31
  • 2017-06-01
  • 1970-01-01
  • 2015-10-29
  • 1970-01-01
相关资源
最近更新 更多