Skip to content

Commit 4a458a5

Browse files
committed
'更新了Django示例代码'
1 parent b265f0c commit 4a458a5

File tree

16 files changed

+239
-99
lines changed

16 files changed

+239
-99
lines changed

Day41-55/code/hellodjango/db.sqlite3

Whitespace-only changes.
Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,19 @@
11
from django.contrib import admin
22

3-
from demo.models import Teacher
3+
from demo.models import Teacher, Subject
4+
5+
6+
class SubjectAdmin(admin.ModelAdmin):
7+
list_display = ('no', 'name', 'intro')
8+
ordering = ('no', )
49

510

611
class TeacherAdmin(admin.ModelAdmin):
7-
list_display = ('no', 'name', 'job', 'intro', 'motto')
12+
list_display = ('no', 'name', 'intro', 'motto', 'subject', 'manager')
813
search_fields = ('name', 'intro')
914
ordering = ('no', )
1015

1116

17+
admin.site.register(Subject, SubjectAdmin)
1218
admin.site.register(Teacher, TeacherAdmin)
19+
Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
# Generated by Django 2.0.6 on 2018-07-03 02:20
1+
# Generated by Django 2.0.6 on 2018-07-04 02:30
22

33
from django.db import migrations, models
4+
import django.db.models.deletion
45

56

67
class Migration(migrations.Migration):
@@ -11,17 +12,31 @@ class Migration(migrations.Migration):
1112
]
1213

1314
operations = [
15+
migrations.CreateModel(
16+
name='Subject',
17+
fields=[
18+
('no', models.AutoField(db_column='sno', primary_key=True, serialize=False, verbose_name='编号')),
19+
('name', models.CharField(db_column='sname', max_length=50, verbose_name='学科名称')),
20+
('intro', models.CharField(db_column='sintro', max_length=511, verbose_name='学科介绍')),
21+
],
22+
options={
23+
'db_table': 'tb_subject',
24+
},
25+
),
1426
migrations.CreateModel(
1527
name='Teacher',
1628
fields=[
17-
('no', models.AutoField(db_column='tno', primary_key=True, serialize=False)),
18-
('name', models.CharField(db_column='tname', max_length=20)),
19-
('job', models.CharField(db_column='tjob', max_length=10)),
20-
('intro', models.CharField(db_column='tintro', max_length=1023)),
21-
('motto', models.CharField(db_column='tmotto', max_length=255)),
29+
('no', models.AutoField(db_column='tno', primary_key=True, serialize=False, verbose_name='编号')),
30+
('name', models.CharField(db_column='tname', max_length=20, verbose_name='姓名')),
31+
('intro', models.CharField(db_column='tintro', max_length=1023, verbose_name='简介')),
32+
('motto', models.CharField(db_column='tmotto', max_length=255, verbose_name='教学理念')),
33+
('photo', models.CharField(blank=True, db_column='tphoto', max_length=511, null=True)),
34+
('manager', models.BooleanField(db_column='tmanager', default=False, verbose_name='是否主管')),
35+
('subject', models.ForeignKey(db_column='sno', on_delete=django.db.models.deletion.PROTECT, to='demo.Subject', verbose_name='所属学科')),
2236
],
2337
options={
2438
'db_table': 'tb_teacher',
39+
'ordering': ('name',),
2540
},
2641
),
2742
]
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# Generated by Django 2.0.6 on 2018-07-04 03:17
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('demo', '0001_initial'),
10+
]
11+
12+
operations = [
13+
migrations.AlterModelOptions(
14+
name='subject',
15+
options={'verbose_name': '学科', 'verbose_name_plural': '学科'},
16+
),
17+
migrations.AlterModelOptions(
18+
name='teacher',
19+
options={'ordering': ('name',), 'verbose_name': '讲师', 'verbose_name_plural': '讲师'},
20+
),
21+
migrations.AddField(
22+
model_name='teacher',
23+
name='bad_count',
24+
field=models.IntegerField(db_column='sbcount', default=0, verbose_name='差评数'),
25+
),
26+
migrations.AddField(
27+
model_name='teacher',
28+
name='good_count',
29+
field=models.IntegerField(db_column='sgcount', default=0, verbose_name='好评数'),
30+
),
31+
migrations.AlterField(
32+
model_name='teacher',
33+
name='photo',
34+
field=models.CharField(blank=True, db_column='tphoto', max_length=511, null=True, verbose_name='照片'),
35+
),
36+
]

Day41-55/code/hellodjango/demo/migrations/0002_teacher_photo.py

Lines changed: 0 additions & 18 deletions
This file was deleted.

Day41-55/code/hellodjango/demo/migrations/0003_auto_20180703_1355.py

Lines changed: 0 additions & 17 deletions
This file was deleted.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Generated by Django 2.0.6 on 2018-07-04 03:18
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('demo', '0002_auto_20180704_1117'),
10+
]
11+
12+
operations = [
13+
migrations.AlterField(
14+
model_name='teacher',
15+
name='bad_count',
16+
field=models.IntegerField(db_column='tbcount', default=0, verbose_name='差评数'),
17+
),
18+
migrations.AlterField(
19+
model_name='teacher',
20+
name='good_count',
21+
field=models.IntegerField(db_column='tgcount', default=0, verbose_name='好评数'),
22+
),
23+
]

Day41-55/code/hellodjango/demo/migrations/0004_auto_20180703_1412.py

Lines changed: 0 additions & 21 deletions
This file was deleted.
Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,34 @@
11
from django.db import models
2+
from django.db.models import PROTECT
23

3-
# Django框架中包含了ORM(对象关系映射)框架
4-
# ORM可以帮助我们完成对象模型到关系模型的双向转换
4+
5+
class Subject(models.Model):
6+
no = models.AutoField(primary_key=True, db_column='sno', verbose_name='编号')
7+
name = models.CharField(max_length=50, db_column='sname', verbose_name='学科名称')
8+
intro = models.CharField(max_length=511, db_column='sintro', verbose_name='学科介绍')
9+
10+
def __str__(self):
11+
return self.name
12+
13+
class Meta(object):
14+
db_table = 'tb_subject'
15+
verbose_name = '学科'
16+
verbose_name_plural = '学科'
517

618

719
class Teacher(models.Model):
820
no = models.AutoField(primary_key=True, db_column='tno', verbose_name='编号')
921
name = models.CharField(max_length=20, db_column='tname', verbose_name='姓名')
10-
job = models.CharField(max_length=10, db_column='tjob', verbose_name='职位')
1122
intro = models.CharField(max_length=1023, db_column='tintro', verbose_name='简介')
1223
motto = models.CharField(max_length=255, db_column='tmotto', verbose_name='教学理念')
13-
photo = models.CharField(max_length=511, db_column='tphoto', null=True)
24+
photo = models.CharField(max_length=511, db_column='tphoto', verbose_name='照片', null=True, blank=True)
25+
subject = models.ForeignKey(Subject, db_column='sno', on_delete=PROTECT, related_name='+', verbose_name='所属学科')
26+
manager = models.BooleanField(default=False, db_column='tmanager', verbose_name='是否主管')
27+
good_count = models.IntegerField(default=0, db_column='tgcount', verbose_name='好评数')
28+
bad_count = models.IntegerField(default=0, db_column='tbcount', verbose_name='差评数')
1429

1530
class Meta(object):
1631
db_table = 'tb_teacher'
17-
ordering = ('-no', )
32+
verbose_name = '讲师'
33+
verbose_name_plural = '讲师'
34+
ordering = ('name', )
Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,35 @@
1+
import json
2+
3+
from django.http import HttpResponse
14
from django.shortcuts import render
25

3-
from demo.models import Teacher
6+
from demo.models import Subject, Teacher
7+
8+
9+
def index(request):
10+
ctx = {'subjects_list': Subject.objects.all()}
11+
return render(request, 'demo/index.html', ctx)
12+
13+
14+
def show_teachers(request, no):
15+
teachers = Teacher.objects.filter(subject__no=no)
16+
ctx = {'teachers_list': teachers}
17+
return render(request, 'demo/teacher.html', ctx)
18+
19+
20+
def make_good_comment(request, no):
21+
teacher = Teacher.objects.get(pk=no)
22+
teacher.good_count += 1
23+
teacher.save()
24+
ctx = {'code': 200, 'result': f'好评({teacher.good_count})'}
25+
return HttpResponse(json.dumps(ctx),
26+
content_type='application/json; charset=utf-8')
427

528

6-
def home(request):
7-
# 通过ORM框架实现持久化操作CRUD
8-
ctx = {'teachers_list': list(Teacher.objects.all())}
9-
return render(request, 'demo/home.html', ctx)
29+
def make_bad_comment(request, no):
30+
teacher = Teacher.objects.get(pk=no)
31+
teacher.bad_count += 1
32+
teacher.save()
33+
ctx = {'code': 200, 'result': f'差评({teacher.bad_count})'}
34+
return HttpResponse(json.dumps(ctx),
35+
content_type='application/json; charset=utf-8')

0 commit comments

Comments
 (0)