これは JSL(日本システム技研) Advent Calendar 2020 - Qiita 12/15分の記事です。
DjangoにはSystem check frameworkがあり、Djangoプロジェクトの正しさをチェックしてくれます。
System check framework | Django ドキュメント | Django
そんな中、特定のチェックで大量に引っかかってしまうことがありました。
そこで、特定のチェックのメッセージ出力を抑える方法を探した時のメモを残します。
目次
環境
事例
例えば、Djangoを1系からバージョンアップする中で、urls.pyに
urlpatterns = [ path('warn$', TemplateView.as_view(template_name='silence_app/index.html')), ]
と、 $
を残してしまったとします。
この場合、開発用のサーバを起動すると、
Performing system checks... System check identified some issues: WARNINGS: ?: (2_0.W001) Your URL pattern 'warn$' has a route that contains '(?P<', begins with a '^', or ends with a '$'. This was likely an oversight when migrating to django.urls.path(). System check identified 1 issue (0 silenced).
というメッセージが表示されます。
実際には他のメッセージも表示されているため、このメッセージだけを抑制したいとします。
対応
settings.pyに SILENCED_SYSTEM_CHECKS
を定義します。
https://docs.djangoproject.com/en/3.1/ref/settings/#silenced-system-checks
今回は 2_0.W001
を抑制したいので、settings.pyに
SILENCED_SYSTEM_CHECKS = ['2_0.W001']
と定義します。
その後、開発サーバを起動すると
Performing system checks... System check identified no issues (1 silenced).
へと表示が変わり、2_0.W001を抑制できました。
なお、この警告ですが、実際にアクセスしてみると
warn宛
$ curl localhost:8000/silence/warn -v ... < HTTP/1.1 404 Not Found
warn$宛
$ curl localhost:8000/silence/warn$ -v ... < HTTP/1.1 200 OK
となります。
ソースコード
Githubに上げました。 silence_app
ディレクトリが今回のDjangoアプリです。
https://github.com/thinkAmi-sandbox/django_31-sample