個人ブログをDjangoで運用してい流のですが、毎回記事をhtmlで書くのがめんどくさくなってきたので Markdownを導入してみました。
今回はDjangoのライブラリー、Django MarkdownXを使って実装していきます。

markdownxの実装

markdownxのインストール

まずはターミナルからmarkdownxのインストールをしてください。

$ pip install django-markdownx

パッケージをインストールしたらrequirements.txtを更新するのを忘れずに!

$ pip freeze > requirements.txt


settings.pyの設定

INSTALLED_APPSにmarkdownxを追記してください。

INSTALLED_APPS = [
    ...
    'markdownx',
    ...
]


urls.pyの設定

先ほど設定したsettings.pyと同じディレクトにあるurls.pyにmarkdownxのパスを追記します。
デフォルトでadminのパスが記載されているファイルです。

urlpatterns = [
     ...
    path('admin/', admin.site.urls),
    path('markdownx/', include('markdownx.urls')), #これ
     ...
]

パスを追記したらターミナルからmarkdownxのアセット一式をstaticファイルに集約してください。

$ python manage.py collectstatic


models.pyの設定

markdownxの必要なモジュールをインポートして、マークダウンで書きたいフィールドをMarkdownxFieldにしてください。
テンプレートでmarkdownを適応するための設定もしておきます。

from markdownx.models import MarkdownxField
from markdownx.utils import markdownify
class Articles(models.Model): title = models.CharField(max_length=200) body = MarkdownxField('Body', help_text='To Write with Markdown') #これ published_date = models.DateTimeField(auto_now_add=True)
def markdown(self): #テンプレートでmarkdownを適応するため return markdownify(self.body)

templateの設定

htmlファイルで先ほどのMarkdownで書いたフィールドを表示したい箇所に以下のように記述します。

{{ article.markdown | safe }}

admin.pyの設定

ブログの記事の更新でデフォルトのadmin管理画面を使用している人はmodels.pyと同じディレクトにあるadmin.pyにMarkdownxModelAdminを設定します。

...
from markdownx.admin import MarkdownxModelAdmin
from .models import Articles
... admin.site.register(Articles, MarkdownxModelAdmin)
これで管理画面からMarkdownで書けるようになりました。 以上で基本的なMarkdownxの実装はOKです。
forms.pyなどを使用している場合はDjango MarkdownXを参考にしてください。

まとめ

Djangoのライブラリーって本当に便利で簡単に導入できるものが多いですよね。
質問等ありましたらSNSから気軽にご連絡ください。 ここまで読んでくれてありがとうございました!

またね✋