Flask-FlatPages中文文檔

Flask-FlatPages

Flask-FlatPages為Flask應(yīng)用提供一組頁(yè)面。頁(yè)面是由一些“平滑的”文本文件而非關(guān)系數(shù)據(jù)庫(kù)構(gòu)建渊抄。

安裝

使用pip安裝擴(kuò)展:

$ pip install Flask-FlatPages

或者從Github上獲取源碼溢吻。

配置

開(kāi)始使用展箱,僅需要在配置好Flask application后沼溜,實(shí)例化一個(gè)FlatPages對(duì)象:

from flask import Flask
from flask_flatpages import FlatPages

app = Flask(__name__)
app.config.from_pyfile('mysettings.cfg')
pages = FlatPages(app)

你也可以通過(guò)init_app()漏麦,遲點(diǎn)傳遞Flask application:

pages = FlatPages()

def create_app(config='mysettings.cfg'): 
  app = Flask(__name__) 
  app.config.from_pyfile(config) 
  pages.init_app(app) 
  return app

Flask-FlatPages可接受下列配置值。所有值都是可選的:

  • FLATPAGES_ROOT:
    頁(yè)面文件的目錄路徑艘策。如果relative蹈胡,解釋為相對(duì)于應(yīng)用根路徑,在statictemplates目錄旁邊朋蔫。默認(rèn)為pages罚渐。

  • FLATPAGES_EXTENSION:
    頁(yè)面的文件拓展名。在FLATPAGES_ROOT目錄內(nèi)的文件驯妄,如果沒(méi)有該后綴將被忽略荷并。默認(rèn)值位.html。
    0.6版起的變化:通過(guò)序列支持多個(gè)文件擴(kuò)展名青扔,如:['.htm','.html'] 或者 通過(guò)逗號(hào)分隔字符串:.htm,.html源织。

  • FLATPAGES_ENCODING:
    頁(yè)面文件的編碼。默認(rèn)為utf8微猖。

  • FLATPAGES_HTML_RENDERER:
    調(diào)用或?qū)胫辽僖粋€(gè)可調(diào)用的頁(yè)面body的Unicode字符串雀鹃,并以Unicode字符串的形式返回其HTML。默認(rèn)為pygmented_markdown()
    励两。
    0.5版的變化:支持將FlatPages實(shí)例作為第二個(gè)參數(shù)傳遞。
    0.6版的變化:支持將Page實(shí)例作為第三個(gè)參數(shù)傳遞囊颅。
    渲染函數(shù)至少需要一個(gè)參數(shù)当悔,Unicode body。第二踢代、第三個(gè)參數(shù)是可選的盲憎,允許更高級(jí)的渲染器。

  • FLATPAGES_MARKDOWN_EXTENSIONS:
    0.4版新增胳挎。
    Markdown擴(kuò)展列表使用默認(rèn)的HTML渲染器饼疙。默認(rèn)為['codehilite']。



API

FlatPages
classflask_flatpages.FlatPages(*app=None*,*name=None*)

一組頁(yè)面對(duì)象慕爬。
使用示例:

pages = FlatPages(app)

@app.route('/')
def index():
  # Articles are pages with a publication date 
  articles = (p for p in pages if 'published' in p.meta) 
  # Show the 10 most recent articles, most recent first. 
  latest = sorted(articles, reverse=True, key=lambda p: p.meta['published']) 
  return render_template('articles.html', articles=latest[:10])

@app.route('/<path:path>/')
def page(path): 
  page = pages.get_or_404(path) 
  template = page.meta.get('template', 'flatpage.html') 
  return render_template(template, page=page)
__iter__()

迭代所有的頁(yè)面對(duì)象窑眯。

get(path,default=None)

返回指定地址的頁(yè)面,若無(wú)則返回默認(rèn)頁(yè)面

get_or_404(path)

返回指定地址的頁(yè)面医窿,若無(wú)則拋出Flask的404錯(cuò)誤磅甩。

init_app(app)

用于初始化應(yīng)用,有助于延后傳遞app和app工廠(chǎng)模式姥卢。
參數(shù):app(一個(gè)Flask實(shí)例)——你的應(yīng)用

reload()

忘掉所有頁(yè)面卷要。
所有頁(yè)面將在其下一次訪(fǎng)問(wèn)是重載渣聚。

Page
classflask_flatpages.Page

一個(gè)簡(jiǎn)單的類(lèi),用來(lái)存儲(chǔ)flatpages所有必要的信息僧叉。

主要目的是用html_renderer函數(shù)來(lái)渲染頁(yè)面內(nèi)容奕枝。

使用先前定義的hello.html:

# hello.html
title: Hello
published: 2010-12-22

Hello, *World*!

Lorem ipsum dolor sit amet, …
>>> page = pages.get('hello')
>>> page.meta # PyYAML converts YYYY-MM-DD to a date object
{'title': u'Hello', 'published': datetime.date(2010, 12, 22)}
>>> page['title']u'Hello'
>>> page.bodyu'Hello, *World*!\n\nLorem ipsum dolor sit amet, \u2026'
>>> page.html
u'<p>Hello, <em>World</em>!</p>\n<p>Lorem ipsum dolor sit amet, \u2026</p>'
__getitem__(name)

快捷訪(fǎng)問(wèn)元數(shù)據(jù)。
page['title'] 或者在模板內(nèi)瓶堕,{{ page.title }}隘道,等價(jià)于 page.meta['title']

__html__()

模板內(nèi),{{ page }} 等價(jià)于 {{ page.html|safe }} 捞烟。

html

頁(yè)面內(nèi)容薄声,使用配置好的渲染器渲染為HTML。

html_renderer = None

渲染函數(shù)

meta

文件頭的元數(shù)據(jù)字典解析為YAML题画。

path = None

頁(yè)面的路徑默辨,獲取于pages.get(path)


flask_flatpages.pygmented_markdown(text,flatpages=None)

渲染Markdown文檔為HTML。
只要Pygments可用苍息,就使用CodeHilite擴(kuò)展缩幸。否則,刪掉擴(kuò)展列表里的“codehilite”竞思。
如果你想用其他擴(kuò)展表谊,使用FLATPAGES_MARKDOWN_EXTENSIONS,設(shè)置其字符串序列盖喷。


flask_flatpages.pygments_style_defs(style='default')

返回值:CodeHiliteMarkdown插件定義的CSS爆办。
參數(shù):sytle——使用的Pygment風(fēng)格。
僅當(dāng)Pygments可用時(shí)课梳。

更新日志

Version 0.6

Released on 2015-02-09

  • Python 3 support.
  • Allow multiple file extensions for FlatPages.
  • The renderer function now optionally takes a third argument, namely thePage
    instance.
  • It is now possible to instantiate multiple instances ofFlatPages
    with different configurations. This is done by specifying an additional parametername
    to the initializer and adding the same name in uppercase to the respective Flask configuration settings.

Version 0.5

Released on 2013-04-02

  • Change behavior of passingFLATPAGES_MARKDOWN_EXTENSIONS
    to renderer function, now theFlatPages
    instance is optionally passed as second argument. This allows more robust renderer functions.

Version 0.4

Released on 2013-04-01

  • AddFLATPAGES_MARKDOWN_EXTENSIONS
    config to setup list of Markdown extensions to use with default HTML renderer.
  • Fix a bug with non-ASCII filenames.

Version 0.3

Released on 2012-07-03

  • AddFlatPages.init_app()
  • Do not use namespace packages anymore: rename the package from flaskext.flatpages
    toflask_flatpages
  • Add configuration files for testing with tox and Travis.

Version 0.2

Released on 2011-06-02
Bugfix and cosmetic release. Tests are now installed alongside the code.

Version 0.1

Released on 2011-02-06.
First public release.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末距辆,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子暮刃,更是在濱河造成了極大的恐慌跨算,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件椭懊,死亡現(xiàn)場(chǎng)離奇詭異诸蚕,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)氧猬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)背犯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人狂窑,你說(shuō)我怎么就攤上這事媳板。” “怎么了泉哈?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵蛉幸,是天一觀(guān)的道長(zhǎng)破讨。 經(jīng)常有香客問(wèn)我,道長(zhǎng)奕纫,這世上最難降的妖魔是什么提陶? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮匹层,結(jié)果婚禮上隙笆,老公的妹妹穿的比我還像新娘。我一直安慰自己升筏,他們只是感情好撑柔,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著您访,像睡著了一般铅忿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上灵汪,一...
    開(kāi)封第一講書(shū)人閱讀 51,182評(píng)論 1 299
  • 那天檀训,我揣著相機(jī)與錄音,去河邊找鬼享言。 笑死峻凫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的览露。 我是一名探鬼主播荧琼,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼差牛!你這毒婦竟也來(lái)了铭腕?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤多糠,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后浩考,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體夹孔,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年析孽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了搭伤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡袜瞬,死狀恐怖怜俐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情邓尤,我是刑警寧澤拍鲤,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布贴谎,位于F島的核電站,受9級(jí)特大地震影響季稳,放射性物質(zhì)發(fā)生泄漏擅这。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一景鼠、第九天 我趴在偏房一處隱蔽的房頂上張望仲翎。 院中可真熱鬧,春花似錦铛漓、人聲如沸溯香。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)玫坛。三九已至,卻和暖如春问顷,著一層夾襖步出監(jiān)牢的瞬間昂秃,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工杜窄, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留肠骆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓塞耕,卻偏偏與公主長(zhǎng)得像蚀腿,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子扫外,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 22年12月更新:個(gè)人網(wǎng)站關(guān)停莉钙,如果仍舊對(duì)舊教程有興趣參考 Github 的markdown內(nèi)容[https://...
    tangyefei閱讀 35,180評(píng)論 22 257
  • # Python 資源大全中文版 我想很多程序員應(yīng)該記得 GitHub 上有一個(gè) Awesome - XXX 系列...
    aimaile閱讀 26,478評(píng)論 6 427
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)筛谚,斷路器磁玉,智...
    卡卡羅2017閱讀 134,652評(píng)論 18 139
  • 不會(huì)有人愿意將初次相識(shí)的你,歸類(lèi)為一生的朋友驾讲。如果有蚊伞,請(qǐng)珍惜他(她)。 那是第一次相遇吮铭,女孩還是一...
    LOVE田心閱讀 301評(píng)論 0 0
  • 他叫錢(qián)小狼谓晌,剛畢業(yè)一年多掠拳,大專(zhuān)園藝技術(shù)專(zhuān)業(yè),當(dāng)初是被調(diào)劑來(lái)的纸肉,由于園藝專(zhuān)業(yè)不用學(xué)高數(shù)溺欧,他便欣然接受了喊熟。到了大二,班...
    離火大盛閱讀 302評(píng)論 0 2