DjangoにMarkDownを導入して執筆を楽にする

Markdownを導入したら、更新情報の入力が一々HtmlやCssやURLを書かずに楽に書くことができるようになったので、そのやり方をシェアしたいと思います。Djangoを詳しく知りたいと思う方はこちらの書籍をご購読すればわかりやすいと思います。

Markdownxのダウンロード

今回はMarkdownxを使用します。

まずMarkdownxをダウンロードします。下記のコマンドを入力すればダウンロードが可能です。

pip install markdownx

PCにMarkdown をインストールが完了したらDjangoに認知してもらうため、settings.pyにmarkdownxを認知してもらうようにします。

installapp[

'markdownx',
]

次にprojectsフォルダのurls.pyにmarkdownを記入を行います

path('markdownx/', include('markdownx.urls')),

appフォルダ内のmodels.pyに移動して書き換えます。

from markdownx.models import MarkdownxField

class blog(models.Model):
text = text =MarkdownxField()

これでmodels.pyによる追加は完了です migrateをし忘れないようにしましょう

あとはadmin.pyに反映させれば入力フォームは完了です。

HTMLへの反映

このままではMarkdown形式にしたところでそのまま反映するので、Markdownに変換するように指示を出します。

まずはアプリフォルダに適当な名前のpythonファイルを作成します。

次に以下のコードを入力すれば完了します

from django import template
from django.template.defaultfilters import stringfilter
 
import markdown as md
 
register = template.Library()
 
@register.filter()
@stringfilter
def markdown(value):
    return md.markdown(value, extensions=['markdown.extensions.fenced_code'])

あとは反映させたいHtmlにコードに追加すれば完了します。

safeは自分でjavascriptとかを入力したい場合などに使うといいでしょうただしコメント欄には悪意あるjavascriptを入れ込まないようにするためエスケープさせる必要があります。

{% extends 'blog/base.html' %}
{% load app %}
...
...
{% blog.text|markdown|safe %}

MarkDownで作ったブログ記事がこちらです。

このほかにもDjangoやHtmlに関する投稿をあげています。ご興味がありましたら是非ご覧ください

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA