通过在Python中编写自己的简单、轻量级、无魔法的静态站点生成器,完全控制静态网站/博客生成。对的!重新发明轮子,伙计们!
目录
简介
这个库包含一个含两个静态博客和几个静态页面的网站例子的源代码。网站通过运行makesite.py生成。结果像这个例子(https://tmug.github.io/makesite-demo)。就这样!
因此,请继续,创建此库的分支,替换成自己的内容,并生成静态网站。 就这么简单!
您可以自由地为博客或网站复制,使用和修改此项目,因此请继续并分发此库并将其作为自己的项目。 如果愿意,可以更改布局,根据自己的想法改进样式表,如果需要可以增强makesite.py,并按照需要开发网站/博客。
但是为什么?
为了娱乐和利润! 好吧,也许不是为了赢利,而是希望有趣。
你有没有使用像Jekyll这样流行的静态网站生成器来生成你的博客? 我也有过。 它很简单,很棒。 但是,您是否渴望使用更简单的方式来生成您的博客? 你喜欢Python吗? 也许你也萌生过编写自己的静态网站生成器的想法,但你认为要付出相当大的工作量? 如果你对这些问题的回答“是”,那么这个项目就是为你准备的。
通过makesite.py,你可以完全控制。 没有隐藏的魔法! 无需阅读任何文档即可了解其工作原理。 没有必要学习如何编写配置文件来产生一些预期的效果。
通过makesite.py:
一切都按照简单易懂的Python代码进行布置,供您阅读和增强。 它少于120行代码(不包括注释,文档字符串和空白行)。 它让你快速开始。 你只需要执行makesite.py。
您可以在几分钟内开发一个体面的网站/博客,然后您可以开始修改源代码,布局和样式表,以自定义您的网站的外观和感觉,从而达到满意的效果。
开始
本节提供了一些快速步骤,让您尽快开始。
要在本地系统上进行快速演示,只需输入以下命令:
如果你没有make,但有Python 3.x,输入这个命令:
注意:在某些环境中,您可能需要使用python而不是python3来调用Python 3.x.
如果您只有Python 2.7,请输入以下命令:
然后访问http//localhost:8000/。 它应该看起来像这样。
注意:您可以使用Python 2.7或Python 3.x运行makesite.py。
您可能会在前一个命令的输出中看到一些Markdown的警告消息无法渲染。 这是由于这个项目中的一个示例博客有一些用Markdown编写的帖子。 要正确渲染它们,请使用以下命令安装commonmark软件包:
然后再次尝试上一步。
对于一个面向互联网的网站,您将静态网站/博客放在某个托管服务和/或Web服务器,如Apache HTTP服务器,Nginx等。您可能只需要生成静态文件,并知道这些静态文件在哪里,并将它们移动到您的托管位置。
如果您有make命令,请输入以下命令以生成您的网站:
如果你没有make但是有python3,输入这个命令:
注意:在某些环境中,您可能需要使用python而不是python3来调用Python 3.x.
如果你只有python,输入这个命令:
_site目录包含整个生成的网站。 该目录的内容可以被复制到您的网站托管位置。
代码
现在您已经知道如何生成此项目附带的静态网站,现在该查看makesite.py的功能了。 您可能并不需要阅读整个部分。 源代码非常明了,但以防万一,您需要详细了解它的功能,下面是详细信息:
这三个位置参数之后是关键字参数。 这些关键字参数用作输出路径模板和布局模板中的模板参数,以便用占位符的相应值替换占位符。
如上面第2点所述,内容文件可以在其内容头中覆盖这些参数。
布局
在这个项目中,布局模板文件位于布局目录中。 但他们不一定要在那里。 您可以将布局文件放在任何地方并相应地更新makesite.py。
本项目附带的makesite.py的源代码理解布局模板中占位符的概念。 模板占位符具有以下语法:
围绕的{{之前,}}之后的任何空白都会被忽略。应该是一个有效的Python标识符。 以下是模板占位符的示例:
这是在makesite.py中已经实现的一个非常简单的模板机制。 对于简单的网站或博客,这应该足够了。 如果您需要更复杂的模板引擎(如Jinja2或Cheetah),则需要修改makesite.py以添加对它的支持。
内容
在这个项目中,内容文件位于内容目录中。 大多数内容文件都是用HTML编写的。 但是,博客博客的内容文件是用Markdown编写的。
makesite.py支持内容文件中标题的概念。 每个内容文件可以以包含标题的一个或多个连续HTML注释开始。 每个头文件都有以下语法:
在标记之前,之后和周围的任何空白都将被忽略。 以下是一些示例标题:
它会在每个内容文件的顶部查找标题。 只要遇到一些非标题文本,就不会检查该标题的其余内容。
答谢
致谢:
Susam的文档和单元测试。
Keith Gaughan改进了模板的单次渲染。
许可
这是免费的开源软件。 根据MIT许可证的条款,您可以使用,复制,修改,合并,发布,分发,再许可和/或出售其副本。
本软件按“原样”提供,不附有任何明示或暗示的担保。 详细信息请参见MIT许可证。
支持
要报告错误,提出改进建议或提出问题,请访问https://github.com/sunainapai/makesite/issues。