我的公司正在评估Wagtail作为我们网站某些部分的CMS。目前,我们正在运行Python 2.7和Django 1.5(不要问...)。我们可以在一个单独的实例上运行Wagtail,该实例可以包括最新版本的Python / Django,但是我们将无法在我们的主应用程序中开箱即用地运行Wagtail。
我们正在考虑将Wagtail严格用作CMS,然后将主网站的请求代理到Wagtail实例,并仅返回生成的标记。
有没有人做过这样的事情,可以洞悉我们可能采取的流程? Wagtail是否提供开箱即用的功能?我们可能会遇到哪些潜在的陷阱,或者我们应该注意的事情?
这可能意味着我们将Wagtail而不是存储在Wagtail中的“整个页面”视为存储不同内容片段的一种方式:一段文本将被加载到我们的首页或动态搜索结果的外部包装中页面。
答案 0 :(得分:7)
是的,Wagtail确实通过其API提供了以下功能:
http://docs.wagtail.io/en/v2.1/advanced_topics/api/
您可以使用JavaScript从主网站的前端使用API(React和Vue是此方法的常用选项,但是如果您不需要带有路由的复杂单页应用程序,则不需要使用它们)等等),或者从后端,从Django 1.5应用的视图发出HTTP请求。
关于潜在的陷阱,主要问题是Wagtail预览无法立即使用,因为Wagtail不知道如何呈现内容。如果您在呈现Wagtail API内容的网站上具有可预测的URL结构,则可以配置预览机制来处理此问题。
如果您不打算使用API方法,也可以考虑在主站点中嵌入渲染片段的方法。例如,如果您在主站点前使用Varnish,则可以利用Edge Side Includes:
https://varnish-cache.org/docs/3.0/tutorial/esi.html
最后,您可能会发现最近有关Wagtail作为无头CMS的谈话很有用: