matobaの備忘録

育児しながら働くあるエンジニアの記録

DjangoのGenericView

DjangoのGenericViewって何だろう?って思ってたので、それを調べました。

これはその調べた時のメモです。

とりあえず、僕は調べる時にこのあたりを読んでいました。

公式ドキュメントです。 Introduction to class-based views | Django documentation | Django

印象としては、JavaServletみたいなやつだなあと思いました。

ジェネリックビューの経緯としては、以下のように見えます。

  • 最初、Djangoではviewは関数で定義するようにしていた。
  • 関数だけだと、拡張しにくいし、流用しにくいから、何とかならんのか。という話になった。
  • クラスベースビューを作った。クラスベースビューがGeneric Viewと呼ばれていた
  • 最近では、Generic Viewとは呼ばれず、クラスベースビューとなっている。

古いバージョンを見てみると、Django1.8だとGeneric Viewのパッケージは、以下にあります。

from django.views.generic import View

でも、Django1.11だと以下にあります。

from django.views import View

パッケージが移動されたんですね。

あとは普通に以下のような感じで、httpのmethodに対して、実行する処理を分けられます。

class MyView(View):

    def get(self, request):
        return HttpResponse('Hello My View . GET')

    def post(self, request):
        return HttpResponse('Hello My View . POST')

他、参考にした記事

[Django]ジェネリックビューってなんなんだよ - くろのて

Django1.3のClass-based generic viewsを使う - 偏った言語信者の垂れ流し