DjangoにHEADメソッドを投げてもGETの処理が走ってしまう

以前勤めていた会社で管理していたポータルサイトで、クローラーがHEADでページを要求しているのにDBの負荷が上がって不思議に思い調べたらこのような実装になっていた。

その時調べたときはこの記事をみただけで(バージョンが違うけどどうせ処理は同じでしょ)と思い終わりにしていたけど、今回はソースも確認する。

blog.hirokiky.org

Version:2.2.6

def view(request, *args, **kwargs):
    self = cls(**initkwargs)
    if hasattr(self, 'get') and not hasattr(self, 'head'):
        self.head = self.get
        # 省略
    return self.dispatch(request, *args, **kwargs)

https://github.com/django/django/blob/2.2.6/django/views/generic/base.py#L63

やっぱり変わっていないですね、とりあえずDjangoソースコードを追う機会ができて楽しかったです。