Skip to content

Commit 96719b5

Browse files
committed
更新了Django第三天代码
1 parent 9eaf653 commit 96719b5

File tree

9 files changed

+130
-49
lines changed

9 files changed

+130
-49
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
venv
22
.idea
33
*.pyc
4+
__pycache__
45

Day32/oa/hrs/migrations/0001_initial.py

-41
This file was deleted.

Day32/oa/hrs/models.py

+10
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,20 @@
11
from django.db import models
22

3+
# ORM - 对象关系映射
4+
# 对象模型 <---> 关系模型
5+
# 实体类 <---> 二维表
6+
# 属性 <---> 列
7+
# 对象 <---> 记录
8+
39

410
class Dept(models.Model):
511
no = models.IntegerField(primary_key=True, verbose_name='部门编号')
612
name = models.CharField(max_length=20, verbose_name='部门名称')
713
location = models.CharField(max_length=10, verbose_name='部门所在地')
14+
excellent = models.BooleanField(default=0, verbose_name='是否优秀')
15+
16+
def __str__(self):
17+
return self.name
818

919
class Meta:
1020
db_table = 'tb_dept'

Day32/oa/hrs/urls.py

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
from django.urls import path
2+
3+
from hrs import views
4+
5+
urlpatterns = [
6+
path('depts', views.depts, name='depts'),
7+
path('depts/emps', views.emps, name='empsindept'),
8+
path('deldepts', views.del_dept, name='ddel')
9+
]

Day32/oa/hrs/views.py

+19-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
from django.shortcuts import render
1+
from django.shortcuts import render, redirect
2+
from django.urls import reverse
23

34
from hrs.models import Dept, Emp
45

@@ -10,12 +11,26 @@ def index(request):
1011
return render(request, 'index.html', context=ctx)
1112

1213

14+
def del_dept(request):
15+
# 重定向 - 重新请求一个指定的页面
16+
return redirect(reverse('depts'))
17+
18+
1319
def emps(request):
14-
dno = int(request.GET['dno'])
20+
no = request.GET['no']
21+
# dept = Dept.objects.get(no=no)
22+
# ForeignKey(Dept, on_delete=models.PROTECT, related_name='emps')
23+
# dept.emps.all()
24+
# emps_list = dept.emp_set.all()
25+
# all() / filter() ==> QuerySet
26+
# QuerySet使用了惰性查询 - 如果不是非得取到数据那么不会发出SQL语句
27+
# 这样做是为了节省服务器内存的开销 - 延迟加载 - 节省空间势必浪费时间
28+
emps_list = list(Emp.objects.filter(dept__no=no).select_related('dept'))
29+
ctx = {'emp_list': emps_list, 'dept_name': emps_list[0].dept.name} \
30+
if len(emps_list) > 0 else {}
31+
return render(request, 'emp.html', context=ctx)
1532

1633

1734
def depts(request):
18-
# DRY - Don't Repeat Yourself
19-
# ORM - Object Relation Mapping
2035
ctx = {'dept_list': Dept.objects.all()}
2136
return render(request, 'dept.html', context=ctx)

Day32/oa/oa/settings.py

+18
Original file line numberDiff line numberDiff line change
@@ -126,3 +126,21 @@
126126
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
127127

128128
STATIC_URL = '/static/'
129+
130+
# 配置将日志输出到控制台 日志级别为DEBUG(最详细的日志)
131+
# DEBUG < INFO < WARNING < ERROR < CRITICAL
132+
LOGGING = {
133+
'version': 1,
134+
'disable_existing_loggers': False,
135+
'handlers': {
136+
'console': {
137+
'class': 'logging.StreamHandler',
138+
},
139+
},
140+
'loggers': {
141+
'django': {
142+
'handlers': ['console'],
143+
'level': os.getenv('DJANGO_LOG_LEVEL', 'DEBUG'),
144+
},
145+
},
146+
}

Day32/oa/oa/urls.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@
1414
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
1515
"""
1616
from django.contrib import admin
17-
from django.urls import path
17+
from django.urls import path, include
1818

1919
from hrs import views
2020

2121
urlpatterns = [
2222
path('', views.index),
2323
path('admin/', admin.site.urls),
24-
path('hrs/depts', views.depts)
24+
path('hrs/', include('hrs.urls')),
2525
]

Day32/oa/templates/dept.html

+11-2
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ <h3>部门信息</h3>
2222
<th>部门编号</th>
2323
<th>部门名称</th>
2424
<th>部门所在地</th>
25+
<th>是否优秀</th>
2526
<th>操作</th>
2627
</tr>
2728
</thead>
@@ -30,11 +31,19 @@ <h3>部门信息</h3>
3031
<tr>
3132
<td>{{ dept.no }}</td>
3233
<td>
33-
<a href="/hrs/emps?dno={{ dept.no }}">{{ dept.name }}</a>
34+
<!-- 写代码时要尽量避免使用硬编码(hard code) -->
35+
<a href="{% url 'empsindept' %}?no={{ dept.no }}">{{ dept.name }}</a>
3436
</td>
3537
<td>{{ dept.location }}</td>
3638
<td>
37-
<a href="/hrs/deldept?dno={{ dept.no }}" class="btn btn-xs btn-warning">删除</a>
39+
{% if dept.excellent %}
40+
<span style="color: green;"></span>
41+
{% else %}
42+
<span style="color: red;">×</span>
43+
{% endif %}
44+
</td>
45+
<td>
46+
<a href="{% url 'ddel' %}?dno={{ dept.no }}" class="btn btn-xs btn-warning">删除</a>
3847
</td>
3948
</tr>
4049
{% endfor %}

Day32/oa/templates/emp.html

+60
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
<!DOCTYPE html>
2+
{% load static %}
3+
<html lang="en">
4+
<head>
5+
<meta charset="UTF-8">
6+
<title>员工</title>
7+
<link href="{% static 'css/bootstrap.min.css' %}" rel="stylesheet">
8+
</head>
9+
<body>
10+
<div class="container">
11+
<div class="row clearfix">
12+
<div class="col-md-12 column">
13+
<h3>{{ dept_name }}员工信息</h3>
14+
<hr>
15+
</div>
16+
</div>
17+
<div class="row clearfix">
18+
<div class="col-md-8 column">
19+
{% if emp_list %}
20+
<table id="dept" class="table table-striped table-hover">
21+
<thead>
22+
<tr>
23+
<th>编号</th>
24+
<th>姓名</th>
25+
<th>职位</th>
26+
<th>月薪</th>
27+
<th>部门名称</th>
28+
</tr>
29+
</thead>
30+
<tbody>
31+
{% for emp in emp_list %}
32+
<tr>
33+
<td>{{ emp.no }}</td>
34+
<td>{{ emp.name }}</td>
35+
<td>{{ emp.job }}</td>
36+
<td>{{ emp.sal }}</td>
37+
<td>{{ dept_name }}</td>
38+
</tr>
39+
{% endfor %}
40+
</tbody>
41+
</table>
42+
{% else %}
43+
<h2>此部门暂时没有员工!</h2>
44+
{% endif %}
45+
</div>
46+
<div class="col-md-4 column">
47+
</div>
48+
</div>
49+
<a href="{% url 'depts' %}">返回部门列表</a>
50+
</div>
51+
<script src="{% static 'js/jquery.min.js' %}"></script>
52+
<script src="{% static 'js/bootstrap.min.js' %}"></script>
53+
<script>
54+
$(function() {
55+
$('#dept tbody tr:even').addClass('info');
56+
$('#dept tbody tr:odd').addClass('warning');
57+
});
58+
</script>
59+
</body>
60+
</html>

0 commit comments

Comments
 (0)