页面从一个wagtail实例导出到另一个wagtail实例
wagtail-import-export的Python项目详细描述
Wagtail进出口
页面从一个wagtail实例导出到另一个wagtail实例。
已发布的页面及其发布的后代可以通过API或文件从源站点导出,并在现有页面下导入目的地站点。
目标站点应具有与源站点相同的页面模型,并具有兼容的迁移。
安装
pip install wagtail-import-export
现在添加到项目的INSTALLED_APPS
:
INSTALLED_APPS = [
# ...
'wagtailimportexport',
# ...
]
将以下内容添加到项目的url.py中(请注意,include(wagtailimportexport_urls)
行必须出现在定义wagtail默认路由的include(wagtail_urls)
行的上方):
from wagtailimportexport import urls as wagtailimportexport_urls
urlpatterns = [
# ...
url(r'', include(wagtailimportexport_urls)),
url(r'', include(wagtail_urls)),
]
(wagtailimportexport.urls
包含导出api端点。管理url位于wagtailimportexport.admin_urls
中,并且
自动注册。)
现在您应该在wagtail管理菜单中看到一个“导入/导出”项。
配置
通过api导入时,默认情况下只导出已发布的页面。如果子代页未发布,并且所有子代都被修剪(即使其中一些子代本身已发布)。
通过在源站点上添加设置,可以导出源页面下的所有页面:
WAGTAILIMPORTEXPORT_EXPORT_UNPUBLISHED = True
这应该not用于公共源站点,因为api未经身份验证,因此将向任何人公开未发布的内容。
限制
如果导入的内容包含页面模型的任何外键,则如果目标页面也是导入的一部分,则这些外键将更新以反映新的页面ID,否则将保持不变。如果目标页既不是导入的一部分,也不存在于目的地站点上,则很可能由于数据库完整性错误而失败。
富文本或streamfield内容中的页引用将不会重写以反映新的页id。
导入按树路径顺序处理;首先导入基Page
记录,然后导入特定页子类的数据。如果导入的模型包含Page
的特定子类的外键,并且该外键的目标页出现在导入中,但稍后会按树路径顺序显示,则此操作将失败,并出现完整性错误(因为此时不会创建相关记录)。
导入中不包括非页面数据,如图像、文档或片段;用户负责确保从导入页面引用的任何对象都已存在于目标网站上(具有匹配的ID)。