┊
┊
┊
# Application definition
INSTALLED_APPS = [
'myliteapp.apps.MyliteappConfig', #追加しますーアプリケーションをプロジェクトに含める。パスをapps.pyに指定.
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
┊
┊
┊
# Database
# https://docs.djangoproject.com/en/4.1/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
┊
┊
┊
# Internationalization
# https://docs.djangoproject.com/en/4.1/topics/i18n/
# 修正
LANGUAGE_CODE = 'ja'
# 修正
TIME_ZONE = 'Asia/Tokyo'
USE_I18N = True
# USE_TZ = True
USE_TZ = False #データを日本時間で表示したい場合はこちら.
┊
┊
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls), #生成時に書かれています.
path('myliteapp/', include('myliteapp.urls')), #追加します.
]
from django.urls import path
from . import views
app_name='myliteapp'
urlpatterns = [
path('', views.index, name='index'),
path('create', views.create, name='create'),
path('allshow', views.allshow, name='allshow'),
path('edit/<uuid:id>', views.edit, name='edit'),
path('show/<uuid:id>', views.show, name='show'),
path('deletion/<uuid:id>', views.deletion, name='deletion'),
]
| 1. id | UUID |
|---|---|
| 2. name | 氏名 |
| 3. address | 住所 |
| 4. mail | メール |
| 5. age | 年齢 |
| 6. created_at | 登録日時 |
| 7. updated_at | 更新日時 |
from django.db import models
import uuid
import datetime
from django.utils import timezone
#uuid生成関数
def get_uuid():
return uuid.uuid4()
#モデルクラス作成(サブクラス)
class MyLiteAppModel(models.Model): #Model継承
id = models.UUIDField(primary_key=True, default=get_uuid, max_length=32, editable=False)
name = models.CharField(max_length=40)
address = models.CharField(max_length=255)
mail = models.CharField(max_length=255)
age = models.IntegerField(default=0)
created_at = models.DateTimeField(auto_now_add=True) #データ登録の日時を保存.
updated_at = models.DateTimeField(auto_now=True) #データ登録の日時を現在の日時に更新.
"""
Djangoにはデータベースを管理するツール(admin)が用意されています。
この管理ツールを使って、いつでもモデル内のデータを取り出せるように、
あるいは、モデルから項目の値を取得して利用したい場合などに設定しておく関数。
以下の関数はモデルのnameの値を取得します。
"""
def __str__(self): #selfーこのモデル(インスタンス)
return self.name
from django import forms
from .models import MyLiteAppModel
#フォームクラス作成(サブクラス)
class SampleLiteForm(forms.ModelForm): #ModelForm継承
#クラスのデータの説明.
class Meta:
model = MyLiteAppModel
fields = ('name','address','mail','age',)
#widgetsを使って各種入力フォーム作り、入力文字列をチェックさせるようにします.
widgets = {
'name':forms.TextInput(),
'address':forms.TextInput(),
'mail':forms.EmailInput(),
'age':forms.NumberInput(),
}
labels = {
'name':"name",
'address':"address",
'mail':"mail",
'age':"age",
}
from django.shortcuts import render
from django.http import HttpResponse
from django.shortcuts import redirect
from django.contrib import messages
from .models import MyLiteAppModel # サブクラスをインポート
from .forms import SampleLiteForm # サブクラスをインポート
# Index
def index(request): #indexリクエスト ー アプリケーションのルーティング「urls.py」で定義.
context = {
'pagetitle': 'Index', #context変数にデータを作成.
}
return render(request, 'myliteapp/index.html', context) #テンプレートファイルへ反映.
# Create
def create(request):
form = SampleLiteForm(request.POST or None) #POSTフォームのインスタンス作成.
context = {
'form': form,
}
if request.method == 'POST':
if form.is_valid(): #入力データのチェック.
recs = MyLiteAppModel(**form.cleaned_data) #POSTデータのインスタンス作成ー**は複数のキーワード入力を受取る.
recs.save() #データセーブ
context = {
'msg': 'Successfully Created',
'form': form,
}
return render(request, 'myliteapp/create.html', context)
return render(request, 'myliteapp/create.html', context)
# Edit
def edit(request, id):
edit_rec = MyLiteAppModel.objects.get(id=id) #編集データの取得.
form = SampleLiteForm(instance=edit_rec) #編集フォームのインスタンス作成.
if request.method == "POST":
form = SampleLiteForm(request.POST, instance=edit_rec) #POSTデータのインスタンス作成
if form.is_valid():
form.save()
messages.success(request, 'データを更新しました。') #システムメッセージを利用.
url = '/myliteapp/edit/' + str(id) #str関数で文字列に変換.
return redirect(to=url) #元のページへ移動.
context = {
'idoutmsg': str(id),
'form':form,
}
return render(request, 'myliteapp/edit.html', context)
# Show
def show(request, id):
rec_show = MyLiteAppModel.objects.get(id=id)
context = {
'rec_show':rec_show,
}
return render(request, 'myliteapp/show.html', context)
# All_show
def allshow(request):
all_list = MyLiteAppModel.objects.all() #全データ取得.
context = {
'all_list':all_list,
}
return render(request,'myliteapp/allshow.html',context)
# Deletion
def deletion(request, id):
derec = MyLiteAppModel.objects.get(id=id)
derec.delete()
return redirect('/myliteapp/allshow') #ページ移動ー最新の全データ表示.