伏地魔是一个使用jinja2和标记模板的简单静态站点生成器。

voldemort的Python项目详细描述


伏地魔

伏地魔是一个简单的静态站点生成器,使用jinja2和markdown 模板。

安装

sudo python setup.py install

sudo easy_install -U voldemort

使用选项

Usage: voldemort [options]

Options:
  -h, --help            show this help message and exit
  -w WORK_DIR, --work_dir=WORK_DIR
                        Working Directory
  -s, --serve           Start the HTTP Server
  -p PORT, --port=PORT  Port inwhich the HTTPServer should run
  -d, --deploy          Deploy this website
  -u USER, --user=USER  Login name for server
  -a AT, --at=AT        Server address to deploy the site
  -t TO, --to=TO        Deployment directory
  --skip-blog           Skip blog posts generation
  --skip-pages          Skip pages generation
  --skip-tags           Skip tags generation
  --skip-feeds          Skip Atom feed generation
  --skip-sitemap        Skip sitemap generation

用法示例

转到示例目录

cd example

然后运行

voldemort

启动httpserver

voldemort --serve -p 8080

打开浏览器并查看正在运行的网站。

部署网站

voldemort --deploy -u foobarnb -a foobarnbaz.com -t /home/foobarnbaz/public_html

写文章

员额主要包括2个科。配置节和模板 章节。两个---中的所有数据都定义了配置,并且 验证为yaml数据。你可以在这里设置与文章相关的属性。 在模板部分,您可以使用jinja2模板或 {% markdown %}{% endmarkdown %}块(可以忽略 如果在元数据部分中定义了layout,则这些块。

根据伏地魔的默认配置,所有基本模板都应该是 在layoutinclude目录中。这不难 限制,但为了保留意义而保留。帖子写在 名为posts的目录。例如,我们有一个目录结构 如下所示

layout/
    listing.html
    post.html
include/
    navigation.html
posts/
    voldemort-is-awesome.markdown
index.html
css/
    screen.css
    pygments.css

我们在layout/listing.html

中有以下数据
<!DOCTYPE html>
<html lang="en-US">

<head>
<title>foobarnbaz.com - {{ page.title }}</title>
{% include "head-common.html" %}
</head>

<body>
<section class="page-content">
{% block content %}{% endblock %}
</section>
</body>
</html>

并且include/header.html包含

<meta charset="UTF-8" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="author" content="Sreejith K" />

<link rel="alternate" href="http://feeds2.feedburner.com/foobarnbaz"
  title="foobarnbaz.com" type="application/atom+xml" />
<link rel="stylesheet" href="/css/screen.css" type="text/css" />
<link rel="stylesheet" href="/css/pygments.css" type="text/css" />
<link href='/images/layout/favicon.ico' rel='shortcut icon' type='image/ico' />

我们将能够编写以下index.html,它将生成 你的博客的首页,上面有所有的文章,并用值分页 在settings.yaml中提供(默认为5)。

---
paginate: true
---
{% extends "listing.html" %}
{% block content %}

{% for post in paginator.posts %}
<article class="excerpt">
<header>
<h1><a href="{{ post.url }}">{{ post.title }}</a></h1>
<time datetime="{{ post.date | date_to_string }}" pubdate="pubdate">
{{ post.date.strftime("%b %d, %Y") }}
</time>
</header>

{% if loop.first %}
{{ post.content }}
<p class="full-post"><a href="{{ post.url }}#comments">comments...</a></p>
{% else %}
<p>{{ post.content }}</p>
<p class="full-post"><a href="{{ post.url }}">full post...</a></p>
{% endif %}

</article>
{% endfor %}
{% endblock %}

以及我们的示例postposts/voldemort-is-awesome.markdown

---
title: Voldemort
date: '02-10-2011'
time: '10:45'
layout: 'post.html'
---
[Voldemort](https://github.com/semk/voldemort) is an awesome static site generator based in Jinja2 and Markdown templates.

有关模板的更多信息,请阅读以下文档。

配置

您可以通过编辑settings.yaml来更改默认设置。

layout_dirs :
              - layout      # directory inwhich base tempaltes reside
              - include     # html code that can be included goes here
posts_dir   : posts         # directory where you write posts
post_url    : "%Y/%m/%d"    # url to posts. You can alter the order
site_dir    : _site         # generated site will be in this directory
paginate    : 5             # number of pages to be paginated at once

用户定义的数据只能添加到site下,如下所示

site        :
    name        : "Pythoned!"
    address     : "http://foobarnbaz.com"
    author_name : "Sreejith Kesavan"
    author_email: "sreejithemk@gmail.com"

您可以将网站部署到首选位置或github 本身。

deploy :
        user  : semk
        at    : github.com
        to    : semk.github.com

全局变量

site:       User defined variables from settings.yaml. Also includes site.time
            Eg: site.name, site.address, site.time

posts:      A list of all your posts. All attributes in the YAML section
            can be accessed either using . or [].
            eg. post['date'], post.date

paginator:  You can paginate your posts using this object.
            eg: {% for post in paginator.posts %}
            Attributes:
                posts:  list of posts in this paginator
                current_page    : current page number (None if not)
                next_page       : next page number (None if not)
                previous_page   : previous page number (None if not)

post:       Info about the post. Only accessible in posts.
            Attributes:
                content         : html content of the post
                url             : url to this post
                id              : identifier for the post (url)
                next            : points to the next post
                previous        : points to the previous post
                tags            : points to the tags
            and you can access all the attributes in the config section (eg: post.date)

page:       Info about a page. Only available in pages other than posts.
            Attributes:
                content         : html content of the post
            and you can access all the attributes in the config section (eg: page.title)

tags:       Tags for the blog posts. Globally available.
            Eg: You can loop like {% for tag in tags %} and access tag.name, tag.url and tag.posts

tag:        Available only to the tag template (Default `tag.html`)
            Usage: {% for post in tag.posts %}

过滤器

除了Jinja2提供的内置过滤器外,伏地魔还提供 下面是在HTML页面中使用的过滤器。

date:                   Format datetime objects.
                            eg. post.date | date("%d-%m-%Y")
date_to_string:         Convert date to string.
                            eg. "27 Jan 2011"
date_to_long_string:    Format a date in long format.
                            eg. "27 January 2011"
date_to_xmlschema:      Format a date for use in XML.
                            eg. "2011-04-24T20:34:46+05:30"
xml_escape:             Replace special characters "&", "<" and ">" to
                            HTML-safe sequences.
cgi_escape:             CGI escape a string for use in a URL. Replaces any special
                            characters with appropriate %XX replacements.
uri_escape:             Escape special characters in url.
number_of_words:        Return number of words in a string.
excerpt:                Split the html data. Eg: {{ post.content | excerpt(70) }}

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何拆分字符串(基于各种分隔符),但不保留空格?   解析。Json格式的txt文件和knime中的java   java Spring rest api为什么在rest api调用的响应中更改了数据类型   升华文本3抛出java。lang.ClassNotFoundException,而记事本++不存在   java Android指纹扫描仪在尝试5次后停止工作?   java Android如何设置精确的重复报警?   java如何使用HTTPGET connect为access API输入用户名和密码   java当测试报告显示没有测试失败时,Gradle为什么说“有失败的测试”?   用Gson实现java获取响应   MapReduce程序中函数错误的java不可映射参数   java spring安全性不符合自动代理的条件   java GWT使用异步回调进行同步/阻塞调用   java奇怪的类数组问题无法在jsp中显示   如何在java中使用PrinterJob使用epl打印条形码   java如何在JTable中居中单元格   将Java Mockito测试转换为Kotlin   html Java正则表达式模式匹配到多个相同标记   testCompile中缺少java Gradle(Android)多项目依赖项   在输入提示后输入字符串时发生java FileNotFoundException