详情请点阅读全文
后台管理
第1步、本地化:设置语言、时区
修改project1/settings.py
1 2 3 4 5
| LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
|
第2步,创建管理员
项目下打开cmd输入命令:python manage.py createsuperuser
实操:
1 2 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框架根据注册的模型类来生成对应表管理页面。
1 2
| b = BookInfo() str(b) __str__
|
1)project1/admin.py
1 2 3 4 5
| from django.contrib import admin from app1.models import BookInfo,HeroInfo
admin.site.register(BookInfo)
|
注册完成刷新页面就会展示模型类:
2)Book info名字哪里来
查询表【1】
1 2 3 4 5 6 7 8 9 10
| 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 >>> b2=BookInfo.objects.all() >>> b2 <QuerySet [<BookInfo: BookInfo object (3)>, <BookInfo: BookInfo object (4)>]> >>>
|
★★★改变默认显示名
在app1/models.py里对应的model类加入如下代码
【新加入的代码】
1 2 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的名称变化
说明
1 2 3 4
| b由 <QuerySet [<BookInfo: BookInfo object (3)>, <BookInfo: BookInfo object (4)>]> 变 <QuerySet [<BookInfo: 天龙八部>, <BookInfo: 射雕英雄传>]>
|
实操
1 2 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
1 2 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
重点:
【返回对应图书的名字】
【返回英雄名】
1 2 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】把自定类样式作为参数挂载到注册部分
1 2 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信息也显示出来
1 2 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)
|
效果: