后台管理

第1步、本地化:设置语言、时区

修改project1/settings.py

#LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-hans' #设置语言为中文 # TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai' #设置为中国时区

第2步,创建管理员

项目下打开cmd输入命令:python manage.py createsuperuser

实操:

>>> quit() #退出shell环境

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框架根据注册的模型类来生成对应表管理页面。

b = BookInfo()
str(b) __str__

1)project1/admin.py

from django.contrib import admin #导入admin模块
from app1.models import BookInfo,HeroInfo #导入模型模块
# Register your models here. admin.site.register(BookInfo) # 注册模型类BookInfo

注册完成刷新页面就会展示模型类:

2)Book info名字哪里来

查询表【1】

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)>]> #冒号后面的:BookInfo即是第2/3个箭头的名字由来
>>>

★★★改变默认显示名

在app1/models.py里对应的model类加入如下代码

【新加入的代码】

# 一类
# 图书类
class BookInfo(models.Model):
'''图书模型类'''
# 图书名称,CharField说明是一个字符串,max_length指定字符串的最大长度
btitle = models.CharField(max_length=20)
# 出版日期,DateField说明是一个日期类型
bpub_date = models.DateField() #【新加入的代码】
def __str__(self): #重定义系统的str方法,让它返回对应图书的名字
return self.btitle

查询表【2】注意查询出的b的名称变化

说明

b由
<QuerySet [<BookInfo: BookInfo object (3)>, <BookInfo: BookInfo object (4)>]>

<QuerySet [<BookInfo: 天龙八部>, <BookInfo: 射雕英雄传>]>

实操

>>> quit() #退出shell,下面重新进入,让代码生效

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

from django.contrib import admin #导入admin模块
from app1.models import BookInfo,HeroInfo #导入模型模块
# Register your models here. admin.site.register(BookInfo) # 注册图书model类
admin.site.register(HeroInfo) # 注册英雄model类

2) app1/models.py

重点:

【返回对应图书的名字】

【返回英雄名】

from django.db import models
# 设计和表对应的类,模型类
# Create your models here. # 一类
# 图书类
class BookInfo(models.Model):
'''图书模型类'''
# 图书名称,CharField说明是一个字符串,max_length指定字符串的最大长度
btitle = models.CharField(max_length=20)
# 出版日期,DateField说明是一个日期类型
bpub_date = models.DateField() def __str__(self): #重定义系统的str方法,让它【返回对应图书的名字】
return self.btitle # 多类
# 英雄人物类
# 英雄名 hname
# 性别 hgender
# 年龄 hage
# 备注 hcomment
# 关系属性 hbook,建立图书类和英雄人物类之间的一对多关系
class HeroInfo(models.Model):
'''英雄人物模型类'''
hname = models.CharField(max_length=20) # 英雄名称
# 性别,BooleanField说明是bool类型,default指定默认值,False代表男
hgender = models.BooleanField(default=False)
# 备注
hcomment = models.CharField(max_length=128)
# 关系属性 hbook,建立图书类和英雄人物类之间的一对多关系
# 关系属性对应的表的字段名格式: 关系属性名_id
hbook = models.ForeignKey('BookInfo', on_delete=models.CASCADE) #对应BookInfo表的主键ID def __str__(self): #【返回英雄名】
return self.hname

页面效果:



3)增加个信息试试

第4步,自定义管理页面显示内容

自定义模型管理类。模型管理类就是告诉django在生成的管理页面上显示哪些内容。

0)例如book info正常是这样显示的,我们想让它显示出图书的其它信息:ID、书标题、出版日期

1)app1/admin.py 写自定义样式控制类,并挂载到注册上

【1】自定义类:控制页面显示内容(类名随意写),写完之后,要在注册模型那里加上此处写的类名做为参数才能真正显示

【2】把自定类样式作为参数挂载到注册部分

from django.contrib import admin #导入admin模块
from app1.models import BookInfo,HeroInfo #导入模型模块
# Register your models here. # 【1】自定义类:控制页面显示内容(类名随意写),写完之后,要在注册模型那里加上此处写的类名做为参数才能真正显示
class control_view_Admin(admin.ModelAdmin):
'''自定义:图书样式管理类'''
list_display = ['id','btitle','bpub_date'] #list_display为显示指定表内容的固定写法 #注册类模型
admin.site.register(BookInfo,control_view_Admin) #【2】把自定类样式作为参数挂载到注册部分
admin.site.register(HeroInfo)

2)效果:

4步扩展,把heroinfo信息也显示出来

from django.contrib import admin #导入admin模块
from app1.models import BookInfo,HeroInfo #导入模型模块
# Register your models here. # 自定义类:控制页面显示内容(类名随意写),写完之后,要在注册模型那里加上此处写的类名做为参数才能真正显示
class control_bookview_admin(admin.ModelAdmin):
'''自定义:图书样式管理类'''
list_display = ['id','btitle','bpub_date'] #list_display为显示指定表内容的固定写法 class control_heroview_admin(admin.ModelAdmin):
list_display = ['id','hname','hgender','hcomment'] #注册类模型,control_view_Admin
admin.site.register(BookInfo,control_bookview_admin)
admin.site.register(HeroInfo,control_heroview_admin)

效果:

Django(四) 后台管理:创建管理员、注册模型类、自定义管理页面显示内容的更多相关文章

  1. Django学习路32_创建管理员及内容补充+前面内容复习

    创建管理员 python manage.py createsuperuser   数据库属性命名限制 1.不能是python的保留关键字 2.不允许使用连续的下划线,这是由django的查询方式决定的 ...

  2. Django实战(一)-----用户登录与注册系统3(前端页面、登录视图)

    基本框架搭建好了后,我们就要开始丰富页面内容了.最起码,得有一个用户登录的表单不是么?(注册的事情我们先放一边.) 一. 原生HTML页面 删除原来的login.html文件中的内容,写入下面的代码: ...

  3. 如何给django admin.py配置超级管理员?注册表格?

    admin.py是django给我们提供的功能非常强大的后台,况且支持拓展,,如果你要是觉得admin的后台不够牛逼你可以自己写一个!如何自己写一个后台,后面我有时间了会给大家更新!一起学习!一起进步 ...

  4. Django(十)模型:django模型类对数据库的:增/删/改/查、自关联、管理器、元选项(指定表名)

    一.插入.更新和删除 调用一个模型类对象的save方法的时候就可以实现对模型类对应数据表的插入和更新. 调用一个模型类对象的delete方法的时候就可以实现对模型类对应数据表数据的删除. 二.自关联 ...

  5. django的模型类管理器-----------数据库操作的封装

    模型实例方法 str():在将对象转换成字符串时会被调用. save():将模型对象保存到数据表中,ORM框架会转换成对应的insert或update语句. delete():将模型对象从数据表中删除 ...

  6. django 生成后台管理

    在应用下的admin.py中注册模型类.告诉djang框架根据注册的模型类来生成对应表管理页面. 1) 注册管理数据表 from django.contrib import admin from us ...

  7. Django(四):model

    一.创建model django.db.models是django自带的创建数据库的ORM. 在models.py中以继承models.Model创建表后,需要在setttngs中确保添加了当前应用, ...

  8. Django商城项目笔记No.3用户部分-用户模型类

    Django商城项目笔记No.3用户部分-用户模型类 Django提供了认证系统,文档资料https://yiyibooks.cn/xx/Django_1.11.6/topics/auth/index ...

  9. (动态模型类,我的独创)Django的原生ORM框架如何支持MongoDB,同时应对客户使用时随时变动字段

    1.背景知识 需要开发一个系统,处理大量EXCEL表格信息,各种类别.表格标题多变,因此使用不需要预先设计数据表结构的MongoDB,即NoSQL.一是字段不固定,二是同名字段可以存储不同的字段类型. ...

随机推荐

  1. 02.Scala高级特性:第6节 高阶函数;第7节 隐式转换和隐式参数

    Scala高级特性 1.    课程目标 1.1.   目标一:深入理解高阶函数 1.2.   目标二:深入理解隐式转换 2.    高阶函数 2.1.   概念 Scala混合了面向对象和函数式的特 ...

  2. Day11 - K - Good Luck in CET-4 Everybody! HDU - 1847

    大学英语四级考试就要来临了,你是不是在紧张的复习?也许紧张得连短学期的ACM都没工夫练习了,反正我知道的Kiki和Cici都是如此.当然,作为在考场浸润了十几载的当代大学生,Kiki和Cici更懂得考 ...

  3. 查漏补缺之Go的Strings, bytes, runes和字符

    字节遍历,字符遍历 https://play.golang.org/p/DeZcCN9aHXo package main import ( "fmt" "unicode/ ...

  4. 《精通Objective-C》书籍目录

    1.入门 2.使用类 3.对象和消息传递 4.内存管理 5.预处理器 6.专家级技巧:使用ARC 7.运行时系统 8.运行时系统的结构 9.专家级技巧:使用运行时系统API 10.Foundation ...

  5. vh搭配vw进行响应式布局

    1.浏览器兼容性: IE8-不支持,IOS7.1-不支持,android4.3-不支持 2. vh代表浏览器视口高度(100vh等于当前浏览器的整个高度) 3.vw代表浏览器视口的宽度 (100vw等 ...

  6. Python自动化运维的职业发展道路(暂定)

    Python职业发展之路 Python自动化运维工程 Python基础 Linux Shell Fabric Ansible Playbook Zabbix Saltstack Puppet Dock ...

  7. 关于Redis 分布式 微服务 集群Cluster

    一:Redis 1,redis是一个高性能的键值对存储方式的数据库,同时还提供list,set,zset,hash等数据结构的存储. 2,Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集 ...

  8. C. Maximum Median 二分

    C. Maximum Median 题意: 给定一个数组,可每次可以选择一个数加1,共执行k次,问执行k次操作之后这个数组的中位数最大是多少? 题解:首先对n个数进行排序,我们只对大于中位数a[n/2 ...

  9. JSP数据交互二

    1.JSP内置对象:JSP内置对象是 Web 容器创建的一组对象,不用通过手动new就可以使用2.JSP9大内置对象:      对象名称 类型 request (请求对象)  javax.servl ...

  10. JS echarts统计

    柱状图 function drawbarFunc(xs, ys) { //var xs1 = []; //var ys1 = []; require.config({ paths: { echarts ...