python画机柜图_python

现在流行的静态博客/网站生成工具有很多,比如 Jekyll, Pelican, Middleman, Hyde 等等,StaticGen 列出了目前最流行的一些静态网站生成工具。

我们的内部工具由 Python/Flask/MongoDB 搭建,现在需要加上文档功能,写作格式是 Markdown,不想把文档放到数据库里,也不想再弄一套静态博客工具来管理文档,于是找到了 Flask-FlatPages 这个好用的 Flask 模块。熟悉 Flask 的同学花几分钟的时间就可以用搭建一个简单博客,加上 Bootstrap 的帮助,不到一小时内就可以用 Flask-Flatpages 弄个像模像样的网站出来。

创建开发环境

首先我们需要 pip,在 Mac 上最简单的安装办法是:

$ sudo easy_install pip

$ sudo easy_install virtualenv

如果你在 Mac 上用 Homebrew 包管理工具的话的话,也可以用 brew 升级 Python 和安装 pip:

$ brew update

$ brew install python

创建一个 blog 目录、生成 Python 独立虚拟环境并在这个环境里安装需要的 Flask, Flask-FlatPages 模块:

$ mkdir blog

$ cd blog

$ 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 目录下我们分别新建几个目录:static 用来存放 css/js 等文件,templates 用来存放 flask 要用的 Jinja2 模版,pages 用来存放我们静态博客(Markdown 格式):

$ mkdir -p app/static app/templates app/pages

程序

主程序 blog.py 的功能是,导入必要的模块、配置 Flask-FlatPages 模块需要的参数、创建 Flask 应用、写几个 URL 路由函数,最后运行这个应用:

$ vi app/blog.py

#!flask/bin/python

from flask import Flask, render_template

from flask_flatpages import FlatPages

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('index.html', pages=pages)

@app.route('/pages//')

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, index.html 和 page.html.

$ vi app/templates/base.html

vpsee.com static blog

vpsee.com blog

{% block content %}

{% endblock content %}

代码里 extends “base.html” 的意思是从 base.html 里继承基本的 “骨架”。

$ vi app/templates/index.html

{% extends "base.html" %}

{% block content %}

List of pages

{% for page in pages %}

{{ page.title }}

{% else %}

No post.

{% endfor %}

{% endblock content %}

$ vi app/templates/page.html

{% extends "base.html" %}

{% block content %}

{{ page.title }}

{{ page.html|safe }}

{% endblock content %}

Flask-FlatPages 模块会默认从 pages 目录里寻找 .md 结尾的 Markdown 文档,所以我们把静态博客的内容都放在这个目录里:

$ vi app/pages/hello-world.md

title: Hello World

date: 2014-10-14

tags: [general, blog]

**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/)

运行

基本搞定,运行看看效果吧:

$ flask/bin/python app/blog.py

* Running on http://127.0.0.1:8000/

* Restarting with reloader

静态化

到目前为止,上面的博客运行良好,但是有个问题,这个博客还不是 “静态” 的,没有生成任何 html 文件,不能直接放到 nginx/apache 这样的 web 服务器下用。所以我们需要另一个 Flask 模块 Frozen-Flask 的帮助。

安装 Frozen-Flask:

$ flask/bin/pip install frozen-flask

修改 blog.py,导入 Flask-Frozen 模块,初始化 Freezer,使用 freezer.freeze() 生成静态 HTML:

$ vi app/blog.py

...

from flask_flatpages import FlatPages

from flask_frozen import Freezer

import sys

...

flatpages = FlatPages(app)

freezer = Freezer(app)

...

if __name__ == '__main__':

if len(sys.argv) > 1 and sys.argv[1] == "build":

freezer.freeze()

else:

app.run(port=8000)

运行 blog.py build 后就在 app 目录下生成 build 目录,build 目录里面就是我们要的 HTML 静态文件:

$ flask/bin/python app/blog.py build

$ ls app/

blog.py build pages static templates

更清晰的目录结构如下:

$ tree app

app

├── blog.py

├── build

│   ├── index.html

│   └── pages

│   ├── hello-world

│   │   └── index.html

│   └── test-flatpages

│   └── index.html

├── pages

│   ├── hello-world.md

│   └── test-flatpages.md

├── static

└── templates

├── base.html

├── index.html

└── page.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中进行三维建模可以使用MasterKernel这个Python模块,它可以以编程方式访问ContextCapture Master的所有功能,用于完整的项目创建、编辑和监控。通过使用MasterKernel,可以代替用户界面,实现自动化建模需求,从而显著缩短处理时间,减少人工干预。这个模块适用于小范围、业务简单的建模工作。\[1\] 另外,光度立体法是一种可以根据二维纹理信息提取出三维模型的方法。它通过在相机和物体相对位置不变的条件下,通过不同方向打光获取至少三张(最好四张),然后使用photometric_stereo算子进行处理。这种方法可以实现从二维像到三维模型的转换,但实际上只能得到2.5维的结果。\[2\] 关于巡检路径规划,根据引用\[3\]中提到的分层展示和逻辑关系,可以根据业务上的联系来规划巡检路径。可以将整个区域分为不同的层次和模块,并根据业务需求确定它们之间的关系。可以使用简单的方块和圆柱来代表流程和业务,同时使用存货模型和机房相关的模型来表示底层的机柜和机房。通过这种方式,可以清晰地展示不同层次和模块之间的关系,从而进行巡检路径的规划。 #### 引用[.reference_title] - *1* [Python+AI+CC,这些建模“高级功能”,90%的人不知道](https://blog.csdn.net/wanqiu1112/article/details/113995673)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [MATLAB算法实战应用案例精讲-【像处理】缺陷检测(附python和matlab实现代码)](https://blog.csdn.net/qq_36130719/article/details/128296872)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [基于HTML5和WebGL的三维可视立体动态流程](https://blog.csdn.net/weixin_39932939/article/details/110026677)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值