Python-Markdownのページを見ればすぐわかることですが、
Python-Markdownは、「Markdown」の純粋な実装を至上命題とするライブラリです。
https://python-markdown.github.io/
の冒頭にもはっきり書かれてありますよね?
This is a Python implementation of John Gruber's Markdown.
と。
Python-Markdownというライブラリが総本家として信仰している教祖様たる「Markdown」は、https://daringfireball.net/projects/markdown
なのです。
そして、この正統「Markdown」には、チェックボックスや、打消し線などといった、「邪道な」ものはルール化されていません。
したがって、Python-Markdown単体では、チェックボックスや取り消し線は表示できません。
実装されていないのですから。
したがって、チェックボックスや打消し線を表示するには、異端者としての誹りを受けることも辞さず、他の人が作ったライブラリをインポートすることになります。
下記の邪教の呪文を唱えれば、チェックボックスや打消し線の黒魔術を使えるようになるでしょう。
インストール
Terminal
1pip install markdown-strikethrough
2
3pip install markdown-checklist
出力テスト
import markdown
source = '''
* [ ] foo
* [x] bar
* [ ] baz
~~Delete this line.~~
'''
html = markdown.markdown(source, extensions=['markdown_checklist.extension', 'markdown_strikethrough.extension'])
print(html)
djangoでは
pip install markdown-strikethrough
pip install markdown-checklist
した後であれば
(略)
import markdown
(略)
return markdown.markdown(value, extensions=['markdown_checklist.extension', 'markdown_strikethrough.extension'])
とすれば多分表示できるかと思います。
(質問者さんはソースの一部しか記載していないので試せていませんが。)
#追記
下記のようにbleachで消される対象となるタグ・属性を全部ホワイトリストに追加してください。
import markdown
import bleach
source = '''
* [ ] foo
* [x] bar
* [ ] baz
~~Delete this line.~~
'''
html = markdown.markdown(source, extensions=['markdown_checklist.extension', 'markdown_strikethrough.extension'])
print(bleach.clean(html,
tags=['p','ul','li','input','del'],
attributes={'ul':'class','input':['checkbox','type','disabled','checked']}))
注1:邪教云々は面白く読んでもらうための冗談です。私個人として純粋実装以外のマークダウンをけなす意図は全くありません。
注2:Python-Markdownで打ち消し線を実装していない理由を作者自身が述べている部分:
https://github.com/Python-Markdown/markdown/issues/221
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/12/14 22:11
退会済みユーザー
2020/12/15 10:33
退会済みユーザー
2020/12/15 11:34 編集
退会済みユーザー
2020/12/15 12:27