我有一个Django CMS作为我的后端应用程序。我正在尝试在我的Gatsby前端站点中动态创建页面。我的Django应用程序是使用Graphene通过GraphQL公开的。但是我不能从后端CMS查询插件,也不能使用gatsby-node.js创建页面。在后端应用程序中创建页面时,如何创建页面?
我的想法是
//gatsby-node.js
exports.createPages = ({ graphql, actions }) => {
const pages = graphql`
{
blogPages{
edges{
node{
slug // this slug supposed to come from the backend CMS (Atleast i think)
}
}
}
}
`;
const { createPage } = actions
const blogTemplate = path.resolve(`src/templates/blogTemplate.js`);
pages.blogPages.edges.forEach(edge => { //this should help to create dynamic pages - slug coming from backend CMS
const slug = edge.node.blogpage.slug;
createPage({
path: slug,
component: blogTemplate
})
})
}发布于 2020-06-25 02:20:46
在评论中已经说过了,但总结一下:由于Gatsby是一个静态站点生成器,您不能在运行时动态添加页面。每个页面对应于它自己的html文件,需要在您的its服务器上创建该文件。这不是你可以在运行时做的事情。
您可以做的是设置一个持续集成工作流,在此工作流中您可以在云中的某个位置运行构建。当您在Django中进行更改时触发它,或者定期(每小时/每天)运行它来更新站点。
如果运行重建对您的用例不起作用,那么您需要考虑一个完全不同的架构。
https://stackoverflow.com/questions/62550087
复制相似问题