From 96719b5559676b23dcdb745da24ef045caf6d25e Mon Sep 17 00:00:00 2001 From: jackfrued Date: Wed, 23 May 2018 11:57:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BA=86Django=E7=AC=AC?= =?UTF-8?q?=E4=B8=89=E5=A4=A9=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + Day32/oa/hrs/migrations/0001_initial.py | 41 ----------------- Day32/oa/hrs/models.py | 10 +++++ Day32/oa/hrs/urls.py | 9 ++++ Day32/oa/hrs/views.py | 23 ++++++++-- Day32/oa/oa/settings.py | 18 ++++++++ Day32/oa/oa/urls.py | 4 +- Day32/oa/templates/dept.html | 13 +++++- Day32/oa/templates/emp.html | 60 +++++++++++++++++++++++++ 9 files changed, 130 insertions(+), 49 deletions(-) delete mode 100644 Day32/oa/hrs/migrations/0001_initial.py create mode 100644 Day32/oa/hrs/urls.py create mode 100644 Day32/oa/templates/emp.html diff --git a/.gitignore b/.gitignore index 52c6f0e..837e02c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ venv .idea *.pyc +__pycache__ diff --git a/Day32/oa/hrs/migrations/0001_initial.py b/Day32/oa/hrs/migrations/0001_initial.py deleted file mode 100644 index b42df39..0000000 --- a/Day32/oa/hrs/migrations/0001_initial.py +++ /dev/null @@ -1,41 +0,0 @@ -# Generated by Django 2.0.5 on 2018-05-22 03:07 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='Dept', - fields=[ - ('no', models.IntegerField(primary_key=True, serialize=False)), - ('name', models.CharField(max_length=20)), - ('location', models.CharField(max_length=10)), - ], - options={ - 'db_table': 'tb_dept', - }, - ), - migrations.CreateModel( - name='Emp', - fields=[ - ('no', models.IntegerField(primary_key=True, serialize=False)), - ('name', models.CharField(max_length=20)), - ('job', models.CharField(max_length=10)), - ('mgr', models.IntegerField(null=True)), - ('sal', models.DecimalField(decimal_places=2, max_digits=7)), - ('comm', models.DecimalField(decimal_places=2, max_digits=7, null=True)), - ('dept', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='hrs.Dept')), - ], - options={ - 'db_table': 'tb_emp', - }, - ), - ] diff --git a/Day32/oa/hrs/models.py b/Day32/oa/hrs/models.py index 476be29..84fd032 100644 --- a/Day32/oa/hrs/models.py +++ b/Day32/oa/hrs/models.py @@ -1,10 +1,20 @@ from django.db import models +# ORM - 对象关系映射 +# 对象模型 <---> 关系模型 +# 实体类 <---> 二维表 +# 属性 <---> 列 +# 对象 <---> 记录 + class Dept(models.Model): no = models.IntegerField(primary_key=True, verbose_name='部门编号') name = models.CharField(max_length=20, verbose_name='部门名称') location = models.CharField(max_length=10, verbose_name='部门所在地') + excellent = models.BooleanField(default=0, verbose_name='是否优秀') + + def __str__(self): + return self.name class Meta: db_table = 'tb_dept' diff --git a/Day32/oa/hrs/urls.py b/Day32/oa/hrs/urls.py new file mode 100644 index 0000000..675e992 --- /dev/null +++ b/Day32/oa/hrs/urls.py @@ -0,0 +1,9 @@ +from django.urls import path + +from hrs import views + +urlpatterns = [ + path('depts', views.depts, name='depts'), + path('depts/emps', views.emps, name='empsindept'), + path('deldepts', views.del_dept, name='ddel') +] diff --git a/Day32/oa/hrs/views.py b/Day32/oa/hrs/views.py index 6c58824..dd70dc8 100644 --- a/Day32/oa/hrs/views.py +++ b/Day32/oa/hrs/views.py @@ -1,4 +1,5 @@ -from django.shortcuts import render +from django.shortcuts import render, redirect +from django.urls import reverse from hrs.models import Dept, Emp @@ -10,12 +11,26 @@ def index(request): return render(request, 'index.html', context=ctx) +def del_dept(request): + # 重定向 - 重新请求一个指定的页面 + return redirect(reverse('depts')) + + def emps(request): - dno = int(request.GET['dno']) + no = request.GET['no'] + # dept = Dept.objects.get(no=no) + # ForeignKey(Dept, on_delete=models.PROTECT, related_name='emps') + # dept.emps.all() + # emps_list = dept.emp_set.all() + # all() / filter() ==> QuerySet + # QuerySet使用了惰性查询 - 如果不是非得取到数据那么不会发出SQL语句 + # 这样做是为了节省服务器内存的开销 - 延迟加载 - 节省空间势必浪费时间 + emps_list = list(Emp.objects.filter(dept__no=no).select_related('dept')) + ctx = {'emp_list': emps_list, 'dept_name': emps_list[0].dept.name} \ + if len(emps_list) > 0 else {} + return render(request, 'emp.html', context=ctx) def depts(request): - # DRY - Don't Repeat Yourself - # ORM - Object Relation Mapping ctx = {'dept_list': Dept.objects.all()} return render(request, 'dept.html', context=ctx) diff --git a/Day32/oa/oa/settings.py b/Day32/oa/oa/settings.py index 5787eed..5873bcc 100644 --- a/Day32/oa/oa/settings.py +++ b/Day32/oa/oa/settings.py @@ -126,3 +126,21 @@ USE_TZ = True STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')] STATIC_URL = '/static/' + +# 配置将日志输出到控制台 日志级别为DEBUG(最详细的日志) +# DEBUG < INFO < WARNING < ERROR < CRITICAL +LOGGING = { + 'version': 1, + 'disable_existing_loggers': False, + 'handlers': { + 'console': { + 'class': 'logging.StreamHandler', + }, + }, + 'loggers': { + 'django': { + 'handlers': ['console'], + 'level': os.getenv('DJANGO_LOG_LEVEL', 'DEBUG'), + }, + }, +} diff --git a/Day32/oa/oa/urls.py b/Day32/oa/oa/urls.py index 3a6ab20..cc5869a 100644 --- a/Day32/oa/oa/urls.py +++ b/Day32/oa/oa/urls.py @@ -14,12 +14,12 @@ Including another URLconf 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ from django.contrib import admin -from django.urls import path +from django.urls import path, include from hrs import views urlpatterns = [ path('', views.index), path('admin/', admin.site.urls), - path('hrs/depts', views.depts) + path('hrs/', include('hrs.urls')), ] diff --git a/Day32/oa/templates/dept.html b/Day32/oa/templates/dept.html index 24c4ceb..f7f1860 100644 --- a/Day32/oa/templates/dept.html +++ b/Day32/oa/templates/dept.html @@ -22,6 +22,7 @@ 部门编号 部门名称 部门所在地 + 是否优秀 操作 @@ -30,11 +31,19 @@ {{ dept.no }} - {{ dept.name }} + + {{ dept.name }} {{ dept.location }} - 删除 + {% if dept.excellent %} + + {% else %} + × + {% endif %} + + + 删除 {% endfor %} diff --git a/Day32/oa/templates/emp.html b/Day32/oa/templates/emp.html new file mode 100644 index 0000000..8bf1997 --- /dev/null +++ b/Day32/oa/templates/emp.html @@ -0,0 +1,60 @@ + +{% load static %} + + + + 员工 + + + +
+
+
+

{{ dept_name }}员工信息

+
+
+
+
+
+ {% if emp_list %} + + + + + + + + + + + + {% for emp in emp_list %} + + + + + + + + {% endfor %} + +
编号姓名职位月薪部门名称
{{ emp.no }}{{ emp.name }}{{ emp.job }}{{ emp.sal }}{{ dept_name }}
+ {% else %} +

此部门暂时没有员工!

+ {% endif %} +
+
+
+
+ 返回部门列表 +
+ + + + + \ No newline at end of file