跳转到主要内容

从Wagtail项目生成静态HTML网站

项目描述

Wagtail Freezer

从Wagtail项目生成静态HTML网站

License

PyPI version wagtail-freezer CI

链接

支持的版本

  • 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_URLMEDIA_URL 下文件的 hrefsrc 属性,并将这些文件复制到站点根目录下的对应文件夹。此步骤仅在 STATIC_URLMEDIA_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,尽管在静态网站上不太实用)、非标准中间件以及无疑还有很多其他东西一起使用。请自行承担风险!

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源代码分发

wagtail-freezer-0.1.0.tar.gz (12.0 kB 查看散列

上传时间 源代码

构建分发

wagtail_freezer-0.1.0-py3-none-any.whl (12.5 kB 查看散列

上传时间 Python 3

由以下赞助

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面