详情请点阅读全文 
后台管理
第1步、本地化:设置语言、时区
修改project1/settings.py
| 12
 3
 4
 5
 
 | LANGUAGE_CODE = 'zh-hans'
 
 
 TIME_ZONE = 'Asia/Shanghai'
 
 | 
第2步,创建管理员
项目下打开cmd输入命令:python manage.py createsuperuser
实操:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 
 | >>> quit() 
 D:\a\django-app\project1>py manage.py createsuperuser
 用户名 (leave blank to use 'administrator'): admin
 电子邮件地址: test@qq.com
 Password:
 Password (again):
 密码跟 用户名 太相似了。
 密码长度太短。密码必须包含至少 8 个字符。
 这个密码太常见了。
 Bypass password validation and create user anyway? [y/N]: y
 Superuser created successfully.
 
 py manage.py runserver
 
 | 
打开浏览器输入刚创建的用户名密码:http://127.0.0.1:8000/admin/

第3步,注册模型类
在应用下的admin.py中注册模型类。
告诉djang框架根据注册的模型类来生成对应表管理页面。
| 12
 
 | b = BookInfo()str(b) __str__
 
 | 
1)project1/admin.py
| 12
 3
 4
 5
 
 | from django.contrib import admin from app1.models import BookInfo,HeroInfo
 
 
 admin.site.register(BookInfo)
 
 | 
注册完成刷新页面就会展示模型类:

2)Book info名字哪里来

查询表【1】
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 
 | D:\a\django-app\project1>py manage.py shellPython 3.7.1 (v3.7.1:260ec2c36a, Oct 20 2018, 14:57:15) [MSC v.1915 64 bit (AMD6
 4)] on win32
 Type "help", "copyright", "credits" or "license" for more information.
 (InteractiveConsole)
 >>> from app1.models import BookInfo
 >>> b2=BookInfo.objects.all()
 >>> b2
 <QuerySet [<BookInfo: BookInfo object (3)>, <BookInfo: BookInfo object (4)>]>
 >>>
 
 | 
★★★改变默认显示名
在app1/models.py里对应的model类加入如下代码
【新加入的代码】
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 
 | 
 class BookInfo(models.Model):
 '''图书模型类'''
 
 btitle = models.CharField(max_length=20)
 
 bpub_date = models.DateField()
 
 
 def __str__(self):
 return self.btitle
 
 | 
查询表【2】注意查询出的b的名称变化
说明
| 12
 3
 4
 
 | b由<QuerySet [<BookInfo: BookInfo object (3)>, <BookInfo: BookInfo object (4)>]>
 变
 <QuerySet [<BookInfo: 天龙八部>, <BookInfo: 射雕英雄传>]>
 
 | 
实操
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 
 | >>> quit() 
 D:\a\django-app\project1>py manage.py shell
 Python 3.7.1 (v3.7.1:260ec2c36a, Oct 20 2018, 14:57:15) [MSC v.1915 64 bit (AMD6
 4)] on win32
 Type "help", "copyright", "credits" or "license" for more information.
 (InteractiveConsole)
 >>> from app1.models import BookInfo
 >>> b=BookInfo.objects.all()
 >>> b
 <QuerySet [<BookInfo: 天龙八部>, <BookInfo: 射雕英雄传>]>
 
 | 
再看表:箭头处已经改变

把HeroInfo也注册到admin里,并让其显示英雄名
1) app1/admin.py
| 12
 3
 4
 5
 6
 
 | from django.contrib import admin from app1.models import BookInfo,HeroInfo
 
 
 admin.site.register(BookInfo)
 admin.site.register(HeroInfo)
 
 | 
2) app1/models.py
重点:
【返回对应图书的名字】
【返回英雄名】
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 
 | from django.db import models
 
 
 
 
 class BookInfo(models.Model):
 '''图书模型类'''
 
 btitle = models.CharField(max_length=20)
 
 bpub_date = models.DateField()
 
 def __str__(self):
 return self.btitle
 
 
 
 
 
 
 
 
 class HeroInfo(models.Model):
 '''英雄人物模型类'''
 hname = models.CharField(max_length=20)
 
 hgender = models.BooleanField(default=False)
 
 hcomment = models.CharField(max_length=128)
 
 
 hbook = models.ForeignKey('BookInfo', on_delete=models.CASCADE)
 
 def __str__(self):
 return self.hname
 
 | 
页面效果:


3)增加个信息试试

第4步,自定义管理页面显示内容
自定义模型管理类。模型管理类就是告诉django在生成的管理页面上显示哪些内容。
0)例如book info正常是这样显示的,我们想让它显示出图书的其它信息:ID、书标题、出版日期

1)app1/admin.py 写自定义样式控制类,并挂载到注册上
【1】自定义类:控制页面显示内容(类名随意写),写完之后,要在注册模型那里加上此处写的类名做为参数才能真正显示
【2】把自定类样式作为参数挂载到注册部分
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 
 | from django.contrib import admin from app1.models import BookInfo,HeroInfo
 
 
 
 class control_view_Admin(admin.ModelAdmin):
 '''自定义:图书样式管理类'''
 list_display = ['id','btitle','bpub_date']
 
 
 admin.site.register(BookInfo,control_view_Admin)
 admin.site.register(HeroInfo)
 
 | 
2)效果:

4步扩展,把heroinfo信息也显示出来
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 
 | from django.contrib import admin from app1.models import BookInfo,HeroInfo
 
 
 
 class control_bookview_admin(admin.ModelAdmin):
 '''自定义:图书样式管理类'''
 list_display = ['id','btitle','bpub_date']
 
 class control_heroview_admin(admin.ModelAdmin):
 list_display = ['id','hname','hgender','hcomment']
 
 
 admin.site.register(BookInfo,control_bookview_admin)
 admin.site.register(HeroInfo,control_heroview_admin)
 
 | 
效果:
