搜索:   
现在的位置:首页 > 关于我们

静态站点生成器:makesitepy

来源:本站 作者: 发布时间:2018-09-10 08:11:26 人气: [ ] 查看评论

  通过在Python中编写自己的简单、轻量级、无魔法的静态站点生成器,完全控制静态网站/博客生成。对的!重新发明轮子,伙计们!

  这个库包含一个含两个静态博客和几个静态页面的网站例子的源代码。网站通过运行makesite.py生成。结果像这个例子()。就这样!

  因此,请继续,创建此库的分支,替换成自己的内容,并生成静态网站。 就这么简单!

  您可以自由地为博客或网站复制,使用和修改此项目,因此请继续并分发此库并将其作为自己的项目。 如果愿意,可以更改布局,根据自己的想法改进样式表,如果需要可以增强makesite.py,并按照需要开发网站/博客。

  你有没有使用像Jekyll这样流行的静态网站生成器来生成你的博客? 我也有过。 它很简单,很棒。 但是,您是否渴望使用更简单的方式来生成您的博客? 你喜欢Python吗? 也许你也萌生过编写自己的静态网站生成器的想法,但你认为要付出相当大的工作量? 如果你对这些问题的回答“是”,那么这个项目就是为你准备的。

  通过makesite.py,你可以完全控制。 没有隐藏的魔法! 无需阅读任何文档即可了解其工作原理。 没有必要学习如何编写配置文件来产生一些预期的效果。

  一切都按照简单易懂的Python代码进行布置,供您阅读和增强。 它少于120行代码(不包括注释,文档字符串和空白行)。 它让你快速开始。 你只需要执行makesite.py。

  您可以在几分钟内开发一个体面的网站/博客,然后您可以开始修改源代码,布局和样式表,以自定义您的网站的外观和感觉,从而达到满意的效果。

  您可能会在前一个命令的输出中看到一些Markdown的警告消息无法渲染。 这是由于这个项目中的一个示例博客有一些用Markdown编写的帖子。 要正确渲染它们,请使用以下命令安装commonmark软件包:

  对于一个面向互联网的网站,您将静态网站/博客放在某个托管服务和/或Web服务器,如Apache HTTP服务器,Nginx等。您可能只需要生成静态文件,并知道这些静态文件在哪里,并将它们移动到您的托管位置。

  _site目录包含整个生成的网站。 该目录的内容可以被复制到您的网站托管位置。

  现在您已经知道如何生成此项目附带的静态网站,现在该查看makesite.py的功能了。 您可能并不需要阅读整个部分。 源代码非常明了,但以防万一,您需要详细了解它的功能,下面是详细信息:

  首先它从头开始创建一个全新的_site目录。 静态目录中的所有文件都将复制到此目录中。 稍后将生成静态网站并写入此目录。

  然后它创建一个带有一些默认参数的params字典。这个字典被传递给其他功能。其他函数将从此字典中选择值以填充布局模板文件中的占位符。

  例如,让我们以副标题参数为例。它被设置为我们的示例网站的虚拟品牌名称:“Lorem Ipsum”。我们希望每个页面在标题中包含此品牌名称作为后缀。例如,关于页面的标题中有“About - Lorem Ipsum”。现在查看用作静态网站中所有页面布局的页面布局模板。此布局文件使用{{subtitle}}语法表示它是一个占位符,应该在呈现模板时填充该占位符。

  另一个值得注意的事情是,内容文件可以通过在内容标题中定义自己的参数来覆盖这些参数。例如,查看主页的内容文件。在其内容标题中,即具有键值对的顶部的HTML注释中,它定义了一个名为title的新参数并且覆盖了副标题参数。

  layout/page.html:它包含适用于所有页面的基本模板。 它以和开头,并以结尾。 此模板中的{{content}}占位符将替换为页面的实际内容。 例如,对于关于页面,将{{content}}占位符替换为content/about.html中的全部内容。 这是通过在代码中进一步调用make_pages完成的。

  layout/post.html:它包含博客文章的模板。 请注意,它不以开头,也不包含和标签。 这不是一个完整的独立模板。 该模板仅定义博客帖子特定的一小部分博客帖子页面。 它包含HTML代码和占位符,用于显示博客文章的标题,发布日期和作者。

  此模板必须与页面布局模板组合才能创建最终的独立模板。 为此,我们用页面布局模板中的HTML代码替换页面布局模板中的{{content}}占位符以获取最终的独立模板。 这是通过在代码中进一步调用render来完成的。

  生成的独立模板仍然包含帖子布局模板中的{{content}}占位符。 然后将此{{content}}占位符替换为博客文章中的实际内容。

  layout/list.html:它包含博客列表页面的模板,该页面按反向时间顺序列出博客中的所有帖子。 除了在顶部提供一个标题和在底部提供一个RSS链接之外,这个模板并没有太多的作用。 {{content}}占位符以反向时间顺序填充博客帖子列表。

  就像帖子版面模板一样,该模板必须与页面布局模板结合才能到达最终的独立模板。

  layout/item.html:它包含博客列表页面中每个博客文章项目的模板。 make_list函数使用此模板呈现每个博客文章项目,并将它们插入到列表布局模板中以创建博客列表页面。

  layout/item.xml:它包含每个要收入到RSS源中的博客文章项目的XML模板。 make_list函数使用此模板呈现每个博客文章项目,并将它们插入到layout/feed.xml模板中以创建完整的RSS源。

  加载完所有布局模板后,它会调用render以将帖子布局模板与页面布局模板组合起来,以形成最终的独立帖子模板。

  然后它会两次调用make_pages来呈现主页和其他几个网站页面:联系页面和关于页面。

  然后,它再两次调用make_pages来呈现两个博客:一个名为blog,另一个名为news。

  这三个位置参数之后是关键字参数。 这些关键字参数用作输出路径模板和布局模板中的模板参数,以便用占位符的相应值替换占位符。

  然后,它会两次调用make_list来呈现两个博客的博客列表页面。 这些调用与make_pages调用非常相似。 make_list调用只有两点不同:

  再次阅读由make_pages读取的相同博客帖子是没有意义的,因此我们不会将路径传递给内容源文件,而是将make_pages返回的博客帖子按时间顺序排序的反向排序索引提供给make_list。

  最后,它再两次调用make_list来为这两个博客生成RSS源。 除了我们在这里使用源XML模板来生成RSS源之外,这些调用与以前的调用没有什么不同。

  快速回顾一下,我们创建一个_site目录来编写生成的静态网站,定义一些默认参数,加载所有布局模板,然后调用make_pages来渲染带有这些模板的页面和博客帖子,调用make_list来呈现博客列表页面和RSS源。 就这样!

  看看make_pages和make_list函数是如何实现的。 它们非常简单,每个函数代码少于20行。 一旦你熟悉这段代码,你可以开始修改它来添加更多的博客或减少它们。 例如,您可能不需要新闻博客,因此您可以删除“新闻”的make_pages和make_list调用及其content/news处的内容。

  在这个项目中,布局模板文件位于布局目录中。 但他们不一定要在那里。 您可以将布局文件放在任何地方并相应地更新makesite.py。

  本项目附带的makesite.py的源代码理解布局模板中占位符的概念。 模板占位符具有以下语法:

  围绕的{{之前,}}之后的任何空白都会被忽略。应该是一个有效的Python标识符。 以下是模板占位符的示例:

  这是在makesite.py中已经实现的一个非常简单的模板机制。 对于简单的网站或博客,这应该足够了。 如果您需要更复杂的模板引擎(如Jinja2或Cheetah),则需要修改makesite.py以添加对它的支持。

  在这个项目中,内容文件位于内容目录中。 大多数内容文件都是用HTML编写的。 但是,博客博客的内容文件是用Markdown编写的。

  makesite.py支持内容文件中标题的概念。 每个内容文件可以以包含标题的一个或多个连续HTML注释开始。 每个头文件都有以下语法:

  在,:,和 -->

  标记之前,之后和周围的任何空白都将被忽略。 以下是一些示例标题:

  它会在每个内容文件的顶部查找标题。 只要遇到一些非标题文本,就不会检查该标题的其余内容。

  这是免费的开源软件。 根据MIT许可证的条款,您可以使用,复制,修改,合并,发布,分发,再许可和/或出售其副本。

  本软件按“原样”提供,不附有任何明示或暗示的担保。 详细信息请参见MIT许可证。

评论】【加入收藏夹】【打印】【关闭】【进入论坛讨论】【回顶部

评分: 1分 2分 3分 4分 5分 平均得分: 分,有 人参与评分.
发表评论:(可直接用论坛账号评论) 共有条评论 查看全部评论

查看全部评论

相关导读

    无相关信息

最新资讯

热点资讯

推荐资讯

最新教程

关于我们| 客户案例| 服务项目| VIP服务| 联系我们| 客户服务| 免责声明|
Powered by d88尊龙 Code © 2016-2017 www.g22.com