この記事では、Django の CRUD アプリケーションがどのように構成されているかを知り、その後、自分自身の CRUD アプリケーションを作成します。
Django CRUD アプリケーションって何?
CRUD アプリケーションとは、CRUD-Create, Retrieve, Update, Delete 操作を扱う Web サイトのことです。
CRUD アプリケーションの典型的な例は、学生データアプリケーションです。
このようなアプリケーションでは、以下のことが可能です。
- 新しい学生データの追加/作成
- 現在の生徒のデータを取得する
- すでにある生徒のデータの更新/編集
- 生徒データの削除
以下、それぞれの操作について説明します。

- 作成。作成: データベースに新しい項目を作成、追加する
- Retrieve: データベースからエントリ/エントリを取得する
- Update: データベースの特定のエントリを更新する
- Delete:削除 データベースから特定のエントリーを削除する
Django で独自の CRUD アプリケーションを作成する
それでは、簡単な学生データ CRUD アプリケーションを作ってみましょう。
1. モデルテーブルの作成
データを格納するために、Django のモデルを作成する必要があります。
したがって、以下のモデルをファイルに追加してください。
class StudentModel(models.Model):
id = models.IntegerField(primary_key = True)
student_name = models.CharField(max_length=80)
rollnumber = models.CharField(max_length=10)
student_class = models.IntegerField()
student_age = models.IntegerField()
def __str__(self):
return f"{self.student_name} : {self.rollnumber}"
|
2. モデルフォームの作成
また、モデルフィールドをユーザーに表示するために、モデルフォームが必要です。
class StudentForm(forms.ModelForm):
class Meta:
model = StudentModel
fields = ('id','student_name','rollnumber','student_class','student_age')
|
3. ビューの作成
Views.py で “CreateView” というビューを作成し、以下のコードを追加します。
from .models import StudentModel
from .forms import StudentForm
from django.shortcuts import render,redirect
def CreateView(request):
if request.method == 'POST':
form = StudentForm(request.POST)
if form.is_valid():
form.save()
return redirect('/data')
else:
form =StudentForm()
context = {
'form':form
}
return render(request,'create.html',context)
|
テンプレート “create.html “は、以下のようになります。
<form method = "post">
{% csrf_token %}
{{form.as_p}}
<input type = "submit" value = "submit">
</form>
|
ビューのURLパスは以下のようになります。
path('data/create', CreateView),
|
4. リトリーブビューのコード化
さて、取得操作では、2つの方法が考えられます。
- 全てのデータ一覧を表示する (Django List View)
- 特定のデータのみを表示する (Django Detail View)
したがって、以下の両方の View を views.py ファイルに追加してください。
from django.shortcuts import render,redirect
from .models import StudentModel
from .forms import StudentForm
def Retrieve_ListView(request):
dataset = StudentModel.objects.all()
return render(request,'listview.html',{'dataset':dataset})
def Retrieve_DetailView(request,_id):
try:
data =StudentModel.objects.get(id =_id)
except StudentModel.DoesNotExist:
raise Http404('Data does not exist')
return render(request,'detailview.html',{'data':data})
|
対応する ListView のテンプレートは以下のようになります。
{% for data in dataset %}{{data}}<hr>
{% endfor %} |
対応する DetailView のテンプレートは以下の通りです。
<h3>Name:{{data.student_name}}</h3><br>
<h3>Roll Number:{{data.rollnumber}}</h3><br>
<h3>Class:{{data.student_class}}</h3><br>
<h3>Age:{{data.student_age}}</h3><br>
<hr/>
|
対応するViewsのURLパスは以下の通りです。
path('data/', Retrieve_ListView),
path('data/<int:_id>',Retrieve_DetailView),
|
この記事もチェック:DjangoでのMySQLの使い方|インストールや接続、データ取得等を解説
5. アップデートビューの作成
次の Update View を views.py ファイルに追加します。
from django.shortcuts import render,redirect,get_object_or_404
from .models import StudentModel
from .forms import StudentForm
def UpdateView(request,_id):
try:
old_data = get_object_or_404(StudentModel,id =_id)
except Exception:
raise Http404('Does Not Exist')
if request.method =='POST':
form =StudentForm(request.POST, instance =old_data)
if form.is_valid():
form.save()
return redirect(f'/data/{_id}')
else:
form = StudentForm(instance = old_data)
context ={
'form':form
}
return render(request,'update.html',context)
|
対応するupdate.htmlテンプレートは、以下のようになります。
<form method="post">
{% csrf_token %}
{{form.as_p}}
<input type="submit" value = "Update">
</form>
|
このビューの URL パスは次のようになります。
path('data/<int:_id>/update', UpdateView),
|
6. Delete View のコード化
Delete View を views.py ファイルに追加します。
>に追加します。
対応するdelete.htmlは以下のようになります。
def DeleteView(request,_id):
try:
data = get_object_or_404(StudentModel,id =_id)
except Exception:
raise Http404('Does Not Exist')
if request.method == 'POST':
data.delete()
return redirect('/data')
else:
return render(request, 'delete.html')
|
View の URL パスは以下のようになります。
<form method="post">
{% csrf_token %}
Click YES to confirm
<input type = "submit" value="YES">
<a href='/data'>Cancel</a>
</form>
|
Student’s App の実装
コーディングはここまでです。
では、サーバーを起動して、”/data/create” エンドポイントにアクセスしましょう。
path('data/<int:_id>/delete', DeleteView),
|
submitを押すと、生徒のリストが表示される”/data “ページに到達します。

次に、”/data/1″ エンドポイントを試してみましょう。

それでは、最初のエントリーを更新してみましょう。
“/data/1/update “にアクセスしてください。

いくつかの変更を加え、更新を押すと、特定の学生の詳細表示ページにリダイレクトされます。
最後に、最初の学生を削除してみましょう。
“/data/1/delete “にアクセスします。

YESを押して確認すると、特定の生徒のデータがDBから削除されます。
結論
以上、コーダーの皆さん! これは CRUD アプリケーションについてのすべてでした。
CRUD アプリケーションの REST API バージョンである Django REST API チュートリアルをチェックしてみてください。
次の記事でお会いしましょう! それまでは、コーディングを続けてください!