Create a project
django-admin startproject project2
python3 manage.py startapp employee
python3 manage.py migrate
python3 manage.py createsuperuser
Edit to suit your project
① Edit settings.py
settings.py
//省略
INSTALLED_APPS = [
"employee.apps.EmployeeConfig",
//省略
LANGUAGE_CODE = "ja"
TIME_ZONE = "Asia/Tokyo"
② Edit urls.py
urls.py
//省略
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path("admin/", admin.site.urls),
path('', include( 'employee.urls')),
]
③ Create urls.py in migrations file
migrations/urls.py
from django.urls import path
from .import views
app_name='employee'
urlpatterns=[
path('', views.IndexView.as_view(),name='index')
]
④ Edit views.py
views.py
from django.views import generic
class IndexView(generic.TemplateView):
template_name='employee/employee_list.html'
⑤ Create a template/employee folder in the employee folder and create base.html and employee_list.html
base.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>社員管理システム</title>
<link
href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css"
rel="stylesheet"
integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM"
crossorigin="anonymous"
/>
</head>
<body>
<div class="container">{% block content %} {% endblock %}</div>
<script
src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"
integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz"
crossorigin="anonymous"
></script>
</body>
</html>
employee_list.html
{% extends 'employee/base.html' %} {% block content %}トップページ{% endblock %}
python3 manage.py runserver
Create models.py
① edit models.py
models.py
from django.db import models
from django.utils import timezone
class Department(models.Model):
name = models.CharField('部署名', max_length=20)
created_at = models.DateTimeField('日付', default=timezone.now)
def __str__(self):
return self.name
class Employee(models.Model):
first_name = models.CharField('名', max_length=20)
last_name = models.CharField('姓', max_length=20)
email = models.EmailField('メールアドレス', blank=True)
department = models.ForeignKey(
Department, verbose_name='部署', on_delete=models.PROJECT,
)
created_at = models.DateTimeField('日付', default=timezone.now)
def __str__(self):
return '{0} {1} {2}'.format(self.last_name, self.first_name, self.department)
② edit admin.py
admin.py
from django.contrib import admin
from .models import Deparment, Employee
admin.site.register(Deparment)
admin.site.register(Employee)
③ Go to Projects2 and migrate
cd Projects2
python3 manage.py migrate
python3 manage.py runserver
④ Edit employee/views.py
employee/views.py
rom django.views import generic
from .models import Employee
class IndexView(generic.ListView):
model=Employee
⑤ Edit employee_list.html
employee_list.html
{% extends 'employee/base.html' %} {% block content %}
<table class="table table-bordered mt-4">
<caption>
従業員リスト
</caption>
<thead>
<tr>
<th>ID</th>
<th>姓</th>
<th>名</th>
<th>メール</th>
<th>部署</th>
</tr>
</thead>
<tbody>
{% for employee in employee_list %}
<tr>
<td>{{employee.pk}}</td>
<td>{{employee.last_name}}</td>
<td>{{employee.first_name}}</td>
<td>{{employee.email}}<</td>
<td>{{employee.department}}<</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endblock %}
Add more models.py
① Add more models.py
models.py
from django.db import models
from django.utils import timezone
class Department(models.Model):
name = models.CharField('部署名', max_length=20)
created_at = models.DateTimeField('日付', default=timezone.now)
def __str__(self):
return self.name
class Club(models.Model):
name = models.CharField('部活名', max_length=20)
created_at = models.DateTimeField('日付', default=timezone.now)
def __str__(self):
return self.name
class Employee(models.Model):
first_name = models.CharField('名', max_length=20)
last_name = models.CharField('姓', max_length=20)
email = models.EmailField('メールアドレス', blank=True)
department = models.ForeignKey(
Department, verbose_name='部署', on_delete=models.PROJECT,
)
club = models.ManyToManyField(
Club, verbose_name='部活',
)
created_at = models.DateTimeField('日付', default=timezone.now)
address=models.CharField('住所',max_length=20, blank=True)
def __str__(self):
return '{0} {1} {2}'.format(self.last_name, self.first_name, self.department)
python3 manage.py makemigrations employee
python3 manage.py migrate
② Add more admin.py
admin.py
from django.contrib import admin
from .models import Deparment, Employee, Club
admin.site.register(Deparment)
admin.site.register(Employee)
admin.site.register(Club)
Create a search form
① Create employee/forms.py
employee/forms.py
② Edit view.py
view.py