从Wagtail项目生成静态HTML网站
项目描述
Wagtail Freezer
从Wagtail项目生成静态HTML网站
链接
支持的版本
- Python 3.7 - 3.10
- Django 3.2 - 4.0
- Wagtail 3.x
安装
-
pip install wagtail-freezer
-
将
"wagtail_freezer"
添加到 INSTALLED_APPS -
添加一个
FREEZER_BUILD_DIR
设置,指定静态文件将输出的位置。要在项目根目录下的build
文件夹中写入,使用FREEZER_BUILD_DIR = os.path.join(BASE_DIR, "build")
用法
运行 ./manage.py buildstaticsite
。这将生成 FREEZER_BUILD_DIR 中每个站点的文件夹,子文件夹构成页面树,页面本身保存为 index.html
在适当的位置。
在构建静态文件时,wagtail-freezer 将扫描HTML中任何引用 STATIC_URL
或 MEDIA_URL
下文件的 href
或 src
属性,并将这些文件复制到站点根目录下的对应文件夹。此步骤仅在 STATIC_URL
或 MEDIA_URL
是以 '/' 开头的本地URL时进行。
如果您有额外的静态/媒体文件无法通过解析HTML找到(例如,CSS、JavaScript或JSON中引用的图像),您可以在页面模型中提供一个 freezer_follow_urls
方法,该方法返回要跟踪的媒体/静态URL列表
class HomePage(Page):
@property
def freezer_follow_urls(self):
urls = ['/static/images/background.jpg']
for item in self.playlist.select_related('video'):
urls.append(item.video.url)
return urls
部署
当您对本地静态网站的运行效果满意时(可以通过在根目录下运行 python -m http.server
进行测试),您可以通过安装 AWS 命令行工具(pip install awscli
),创建一个配置为静态网站托管的存储桶 (配置说明) 并运行
aws s3 sync build/localhost s3://mysite.example.com/ --acl public-read
限制
wagtail-freezer 是作为 "最小可行性产品",作为静态网站生成器(如 django-bakery)的替代品而创建的,这些生成器在撰写本文时在当前 Django(和 Wagtail)版本的支持方面落后。它仅针对非常简单的网站进行了测试,可能无法与自定义 URL 路由(RoutablePageMixin)、具有多个预览模式的页面(wagtail.contrib.forms,尽管在静态网站上不太实用)、非标准中间件以及无疑还有很多其他东西一起使用。请自行承担风险!
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。