flask
flask_ext
python
markdown
官方文件:
Markdown應用簡單的標記可以讓文章優雅的排版,已經愈來愈多的網頁都支援,也愈來愈多人開始利用Markdown書寫Blog,如github
,或是jupyter notebook
也內建,筆者目前所使用的HackMD
即是用Markdown渲染排版。
我們還會應用到flask-pagedown
,這個套件的功能在於讓我們可以預覽,像HackMD
就可以左邊編輯右邊預覽,當然你可以選擇單純的使用flask-markdown
在文章呈現的時候再渲染即可,這並沒有限制。
flask-pagedown
似乎是由『miguelgrinberg』所開發,如下圖(Flask Web開發作者):
Flask-MarkDown
我們建置一個新的虛擬環境來測試flask-markdown
,快速的加入一個簡單的Html文件,如下:
第1行:利用{% filter markdown %}{% endfilter %}
來渲染Markdown
接著新增Python文件來執行Flask,如下:
執行專案開啟網頁確認,我們正確的將Markdown語法渲染為Html,如下圖:
後續我們的實作專案上可以直接以『|markdown
』來做渲染,意思是一樣的,讓我們修正一下Python文件測試,如下:
調整Html文件,如下:
第1行:post
是後端拋過來的參數,利用jinja2
表達式來加上markdown
渲染
執行專案,一樣有渲染成功,如下圖:
Flask-PageDown
Flask-PageDown provides a PageDownField class that extends Flask-WTF with a specialized text area field that renders an HTML preview of the Markdown text on the fly as you type.
上面是官方文件上的一個說明,整合flask-wtf
提供了一個PageDownField
(繼承自TextAreaField
),這讓我們可以方便的利用該欄位物件來做渲染呈現。
另外一點是,flask-pagedown
是編輯的時候預覽使用,而非是文章呈現的時候使用,因此如果是文章在網頁上渲染的部份是需要透過flask-markdown
來處理的。
官方案例說明,調整我們稍早測試flask-markdown
的Python文件如下:
調整Html文件,如下:
執行專案測試會發現一個多行欄位,欄位是可以拖拉的,上面輸入markdown
,下面會直接輸出預覽,如下圖:
跟在下在HackMD所見相同,如下圖:
觀察網頁原始碼也可以發現,javascript
確實的由CDN來載入,如下圖:
透過兩個簡單的範例,我們可以快速的理解Flask-MarkDown
與Flask-PageDown
的功能,搭配使用我們也可以讓我們的網頁有著HackMD以及StackOverFlow的功能呈現,這對開發網頁來說是非常便利而且強大的工具,感謝Flask社區的無私貢獻。