文章目录
- Cactus:用 Django 模板写静态网站
- 它解决什么问题
- 核心能力
- 插件与扩展
- 其他细节
- 上手门槛
- 适合谁用
Cactus:用 Django 模板写静态网站
Cactus 是一个用 Python 编写的静态网站生成器,核心思路是把 Django 的模板系统搬到静态站点构建场景。这个项目在 GitHub 上有 3,471 个 Star,在静态生成器赛道里属于稳扎稳打的一类工具。
它解决什么问题
很多设计师和技术背景的产品经理需要搭网站,但不想碰完整的服务端框架,也不愿意手动配置服务器和部署流程。Cactus 的设计目标就是这个群体:提供模板复用能力,同时保持部署简单。
它的工作流分三步:用 Django 模板写页面,本地预览调试,输出纯静态文件后直接上传。因为最终产物是静态 HTML,托管成本很低,访问速度也有保障。Cactus 的作者最初是在 Sofa 公司内部推这个工具,让设计师能独立建站。
核心能力
Cactus 内置了一个本地开发服务器,运行 cactus serve 后会在 localhost:8000 启动预览。文件保存时自动重建项目并刷新浏览器,开发反馈比较及时。
部署方面,它原生支持推送到 Amazon S3,执行 cactus deploy 即可。AWS 密钥会存储在系统 Keychain 或同类安全服务里,后续部署不用再输入。部署时还会自动压缩文本文件并加上缓存头。
插件与扩展
插件系统是 Cactus 比较突出的设计。博客、资源优化、版本管理等功能都以插件形式提供,启用时只需把文件名中的 .disabled 去掉。
博客插件支持从页面元数据读取标题、作者和日期,生成文章列表和归档。页面元数据默认用简单键值对格式,也支持 YAML 块,可以声明数组和对象,模板中直接遍历引用。
Asset pipeline 对前端工作流很实用。开启 fingerprinting 后,JS 和 CSS 文件会被加上内容哈希,方便配置 CDN 长缓存。压缩功能默认集成 YUI 和 Closure compiler,也能在插件目录里自定义优化器。
其他细节
URL 处理上,Cactus 支持 pretty URLs 模式,把 /about.html 渲染成 /about/index.html,对外显示为 /about/。开启时记得在模板里加 canonical 标签,避免搜索引擎判定为重复内容。
域名配置也能自动化。只要 S3 bucket 名称是合法域名,运行 cactus domain:setup 就能获取对应的 nameserver 记录,省去手动配置步骤。
站点地图和 robots.txt 是自动生成的,基于 pages 目录下的文件结构。如果要输出绝对路径,在 config.json 里填上 site-url 即可。
上手门槛
安装用 pip 或 easy_install 都可以。创建项目执行 cactus create [path],生成的目录结构很清晰:pages 放页面文件,templates 放 Django 模板,static 放图片和样式,plugins 放插件,.build 是最终输出目录。
模板语法就是标准的 Django 模板:变量用双大括号,标签用百分号,支持模板继承。有过 Django 经验的人可以直接上手。页面之间的链接用 {% url %} 和 {% static %} 标签,相对路径自动处理。
适合谁用
Cactus 的目标用户很明确:懂技术但不希望折腾服务器配置的人。公司官网、个人作品集、支持页面、博客,这些场景它都能覆盖。官方给出的案例包括 Cactus 自己的官网、Framer 的网站,以及 Crate 数据库的文档站。
如果你已经在 Django 生态里工作,Cactus 是个顺手的静态站点方案。它的代码量不大,插件机制也给二次开发留出了空间。
里工作,Cactus 是个顺手的静态站点方案。它的代码量不大,插件机制也给二次开发留出了空间。