この記事では、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 チュートリアルをチェックしてみてください。
次の記事でお会いしましょう! それまでは、コーディングを続けてください!