[Django]Generic View (汎用ビュー)の使い方まとめ

Django Logo プログラミング

DjangoGeneric View を使う機会があったので、使い方をまとめました。

Generic View を利用することでコーディング量を大幅に削減することができます。

バージョン情報

PythonDjango のバージョンは下記の通りです。

  • Python : 3.6.2
  • Django : 2.0.7

下準備

Generic View を使うアプリを作成していきます。

これを読んだだけじゃアプリの作成方法がわからない場合は、下記の記事も参考にしてもらえればと思います。

[Django] Web アプリケーションを構築する手順まとめ
Python の Web アプリケーションフレームワークである「 Django 」を利用して、アプリを作成する手順を書い...

プロジェクトを作成します。

$ django-admin startproject generic_view

Generic View を使うアプリケーションを作成します。

$ cd generic_view

$ python manage.py startapp sample

マイグレートします。

$ python manage.py migrate

settings.py を編集します。

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'sample.apps.SampleConfig',
]

Generic View を利用して操作したいモデルを sample アプリケーションに追加します。

# models.py
from django.db import models

class Sample(models.Model):
    foo = models.CharField(max_length=100)
    bar = models.CharField(max_length=100)

makemigrations して migrate します。

$ python manage.py makemigrations
$ python manage.py migrate

Generic View で利用する forms.py を作成します。

from django import forms
from .models import Sample

class SampleForm(forms.ModelForm):
    class Meta:
        model = Sample
        fields = ['foo', 'bar']

これで Generic View を使うための準備が出来ました。

Generic View を使う

今回は下記の Generic View を使っていきたいと思います。

  • ListView
  • CreateView
  • UpdateView
  • DeleteView

これで CRUD の操作に対応できるようになります。

今回は主に views.py 部分の説明をおこなっていきたいと思います。

ListView

class SampleListView(ListView):
    model = Sample
    template_name = 'sample_list.html'

CreateView

class SampleCreateView(CreateView):
    form_class = SampleForm
    template_name = 'create.html'

UpdateView

class SampleUpdateView(UpdateView):
    model = Sample
    form_class = SampleForm
    template_name = 'update.html'

DeleteView

class SampleDeleteView(DeleteView):
    model = Sample

最後に

この記述だけで最低限の CRUD を実現することが出来ます。 Generic View を利用することで劇的にコード量を削減できますので、積極的に活用していきたいと思います。

スポンサーリンク
スポンサーリンク
プログラミング
スポンサーリンク

コメント

タイトルとURLをコピーしました