慈惠堂牛樟芝,不良家族国语,太极张三丰背景音乐
现在流行的静态博客/网站生成工具有很多,比如 jekyll, pelican, middleman, hyde 等等,staticgen 列出了目前最流行的一些静态网站生成工具。
我们的内部工具由 python/flask/mongodb 搭建,现在需要加上文档功能,写作格式是 markdown,不想把文档放到数据库里,也不想再弄一套静态博客工具来管理文档,于是找到了 flask-flatpages 这个好用的 flask 模块。熟悉 flask 的同学花几分钟的时间就可以用搭建一个简单博客,加上 bootstrap 的帮助,不到一小时内就可以用 flask-flatpages 弄个像模像样的网站出来。
创建开发环境
首先我们需要 pip,在 mac 上最简单的安装办法是:
$ virtualenv flask
new python executable in flask/bin/python
installing setuptools, pip...done.
$ flask/bin/pip install flask
$ flask/bin/pip install flask-flatpages
程序
主程序 blog.py 的功能是,导入必要的模块、配置 flask-flatpages 模块需要的参数、创建 flask 应用、写几个 url 路由函数,最后运行这个应用:
debug = true
flatpages_auto_reload = debug
flatpages_extension = '.md'
app = flask(__name__)
app.config.from_object(__name__)
flatpages = flatpages(app)
@app.route('/')
def index():
pages = (p for p in flatpages if 'date' in p.meta)
return render_template('', pages=pages)
@app.route('/pages/<path:path>/')
def page(path):
page = flatpages.get_or_404(path)
return render_template('page.html', page=page)
if __name__ == '__main__':
app.run(port=8000)
模版
在 python 中直接生成 html 很繁琐并不好玩(那是上个世纪90年代的 php 搞的事情),在现代社会,我们使用模版引擎,flask 已经自动配置好了 jinja2 模版,使用方法 render_template() 来渲染模版就可以了。flask 会默认在 templates 目录里中寻找模版,我们只需要创建几个模版文件就可以了,这里我们创建 base.html, 和 page.html.
<body>
<h1><a href="{{ url_for("index") }}">vpsee.com blog</a></h1>
{% block content %}
{% endblock content %}
</body>
</html>
{% block content %}
<h2>list of pages
<ul>
{% for page in pages %}
<li>
<a href="{{ url_for("page", path=page.path) }}">{{ page.title }}</a>
</li>
{% else %}
<li>no post.</li>
{% endfor %}
</ul>
{% endblock content %}
{% block content %}
<h2>{{ page.title }}</h2>
{{ page.html|safe }}
{% endblock content %}
**hello world**!
$ vi app/pages/test-flatpages.md
title: test flask flatpages
date: 2014-10-15
tags: [python, flask]
test [flask-flatpages](https://pythonhosted.org/flask-flatpages/)
运行
基本搞定,运行看看效果吧:
静态化
到目前为止,上面的博客运行良好,但是有个问题,这个博客还不是 “静态” 的,没有生成任何 html 文件,不能直接放到 nginx/apache 这样的 web 服务器下用。所以我们需要另一个 flask 模块 frozen-flask 的帮助。
安装 frozen-flask:
$ ls app/
blog.py build pages static templates
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
python求numpy中array按列非零元素的平均值案例
网友评论