django-fastdevを使ってDjangoの開発体験を向上させよう

github.com

django-fastdev というPyPIパッケージが良かったので紹介します。

django-fastdev とは

パッケージの名前のとおり、Djangoの開発を手助けするライブラリです。

主に開発時のデバッグを楽にするための機能がいろいろあります。

使い方は INSTALLED_APPSdjango_fastdev を追加するだけです(リンク元のREADMEを参照してください)。

ここでは代表的なdjango-fastdevの機能を紹介します

django-fastdevの機能

テンプレートで未定義の変数があれば例外を出す

Django Templateなどで未定義の変数を参照してしまうことがあります。通常であれば None として扱われるため変数の表示がないことに気付けないときもあります。

django-fastdevではそのような変数がテンプレートで呼び出されていた場合、 FastDevVariableDoesNotExist という例外が発出されます。

# templates/index.html などで views.py で参照していない no_variable_nameがある
...
{{ no_variable_name }}
...

なお、 default_if_nonedefault など、テンプレートの変数がNoneだった場合にフォールバックするテンプレートタグが呼び出されていれば(django-fastdevのデフォルトの設定では)例外はでません。

定義のないblock を呼び出した場合に例外を出す

Django Templateの変数と同様に {% block %} の呼び出し先が存在しない場合、通常であればエラーにはなりません。 django-fastdevを利用することで例外を発出します。

# templates/index.html などで存在しない no_block_nameを読んでしまう
...
{% block no_block_name %}
...

参照のないURLを呼び出したエラー画面に、存在する urlpattern 表示してくれる

{% url "no-url" %} など urls.py で定義したurlpatternsに存在しないURLを呼び出した場合、通常はReverse for 'no-url' not found. 'no-url' is not a valid view function or pattern name. といった例外だけが発出されます。

django-fastdevを利用していると、この情報に「定義済みのurlpatternsのリスト」を出してくれます

( These names exist: index と書いているのがわかります)

他にも紹介していない機能などがありますが、主に開発時のタイプミスに気づきやすくなるものがいくつかあります。

かゆいところに手が届く django-fastdev、一度試してみてください!