现在进入交互式的Python shell,并使用 Django 提供的免费 API
python manage.py shell
引入需要的包:
from bookApp.models import Hero, Book
查询所有图书信息:
Book.objects.all()
新建图书信息:
from datetime import datetime book = Book(title="射雕英雄传", pub_date=datetime(year=1990,month=1,day=10)) book.save()
查找图书信息:
book = Book.objects.get(pk=1) book.id book.title book.pub_date
修改图书信息:
book.title = "天龙八部" book.save()
删除图书信息:
book.delete()
添加关联对象
# 书籍的创建 book = Book(title="倚天屠龙记", pub_date=datetime(year=1990,month=1,day=10)) book.save() # 人物的创建 info1 = "峨眉第四代掌门人,先为峨眉派掌门灭绝师太的徒儿,颇获灭绝师太欢心并对她>青睐有加,将峨 眉派镇派之宝“蛾眉九阳功”传给了她,张无忌的追求者之一。" info2 = "原名敏敏特穆尔,汝阳王(朝廷大将军察罕特穆尔)的女儿,封号“绍敏郡主”,>赵敏是她的汉 名,是从她的封号“绍敏郡主”而来。" hero1 = Hero(name="周芷若", gender=False, info=info1) hero2 = Hero(name="赵敏", gender=False, info=info2) hero1.Book=book hero2.Book=book hero1.save() hero2.save()
获得关联集合:返回当前book对象的所有hero
book.hero_set.all()
有一个 Hero 存在,必须要有一个 Book 对象,提供了创建关联的数据:
book.hero_set.create(name="张无忌", gender=True, content="武当派第二代“张五侠”张翠山与天鹰教紫微堂堂主殷素素的儿子")
第四步: 启用后台 Admin 站点管理、
站点分为“内容发布(后台管理)”和“公共访问(前台管理)”两部分
“内容发布”的部分负责添加、修改、删除内容,开发这些重复的功能是一件单调乏味、缺乏创造力
的工作。
因此, Django 会根据定义的模型类完全自动地生成管理模块
Django 框架中有一个非常强大的应用功能: 自动管理界面。 常被Web平台管理者使用,去管理整个
Web平台。
默认情况下,在 settings.py 配置文件中 INSTALLED_APPS 包含以下应用程序,为了后续的开发,默
认这些应用程序都是包含在里面的。
(1). 数据库迁移
使用这些 Django 自带的应用程序,需要我们在数据库中创建一些数据表对应,然后才能使用它们。
python manage.py makemigrations python manage.py migrate
(2). 创建管理员用户
# 按提示输入用户名、邮箱、密码 python manage.py createsuperuser
启动服务器,通过 “127.0.0.1:8000/admin” 访问,输入上面创建的用户名、密码完成登录
进入管理站点,默认可以对 groups、users 进行管理
(3). 管理界面本地化
编辑 settings.py 文件,设置编码、时区
LANGUAGE_CODE = 'zh-Hans' TIME_ZONE = 'Asia/Shanghai'
(4). 自定义模型加入后台管理
打开 bookApp/admin.py 文件,注册模型
from django.contrib import admin from models import Book admin.site.register(Book)
刷新管理页面,可以对 Book 的数据进行增删改查操作 ;
问题一: python2 版本中, 如果在 str 方法中返回中文,在修改和添加时会报 ascii 的错误
在 str() 方法中,将字符串末尾添加 “.encode('utf-8')” 进行字符串编码
问题二: 后台管理时, Book管理显示的是英文, 如何变成中文?
# bookApp/models.py class Book(models.Model): # ........此处省略 # 自定义对应的表名,默认表名:bookApp_book class Meta: db_table = "books" # 单数时显示的名称 verbose_name = '图书信息' # 复数时显示的名称 verbose_name_plural = '图书信息'(5). 自定义管理页面
Django 提供了 admin.ModelAdmin 类
通过定义 ModelAdmin 的子类,来定义模型在 Admin 界面的显示方式
# bookApp/admin.py from django.contrib import admin from .models import Book, Hero # 书籍自定义管理页面 class BookAdmin(admin.ModelAdmin): list_display = ['pk', 'title', 'pub_date'] list_filter = ['title'] search_fields = ['title'] list_per_page = 10# fields = ['pub_date', 'title'] fieldsets = [('基础信息', {'fields': ['title']}), ('详细信息', {'fields': ['pub_date']}), ] # 人物自定义管理页面 class HeroAdmin(admin.ModelAdmin): list_display = ['id', 'name', 'gender', 'content'] list_filter = ['name'] search_fields = ['name'] list_per_page = 10 # 关联注册 admin.site.register(Book, BookAdmin) admin.site.register(Hero, HeroAdmin)
列表页属性性
ist_display:显示字段,可以点击列头进行排序 list_display = ['pk', 'title', 'pub_date'] list_filter:过滤字段,过滤框会出现在右侧 list_filter = ['title'] search_fields:搜索字段,搜索框会出现在上侧 search_fields = ['title'] list_per_page:分页,分页框会出现在下侧 list_per_page = 10
添加、修改页属性
fields:属性的先后顺序 fields = ['pub_date', 'title'] fieldsets :属性分组, 注意: fields和fieldsets 只能设置一个. fieldsets = [('基础信息', {'fields': ['title']}), ('详细信息', {'fields': ['pub_date']}), ]
关联对象
对于 Hero 模型类,有两种注册方式
方式一:与 Book 模型类相同
方式二:关联注册
admin.StackedInline : 内嵌关联注册类
admin.TabularInline : 表格 关联注册类
# bookApp/admin.py # class HeroInline(admin.TabularInline): class HeroInline(admin.StackedInline): model = Hero extra = 2 class BookAdmin(admin.ModelAdmin): list_display = ['pk', 'title', 'pub_date'] # .......此处省略部分重复代码 inlines = [HeroInline]
显示效果如下:
布尔值的显示
发布性别的显示不是一个直观的结果,可以使用方法进行封装 # bookApp/models.py class Hero(models.Model): # .......此处省略部分重复代码 def sex(self): if self.gender: return "男" else: return "女" 在 admin 注册中使用 sex 代替 gender # bookApp/admin.py class HeroAdmin(admin.ModelAdmin): list_display = ['id', 'name', 'sex', 'content']
显示效果如下:
到此这篇关于python Django框架快速入门(后台管理)的文章就介绍到这了,更多相关python Django入门内容请搜索
标签:SQLite
相关阅读 >>
Sqlitestudio打开后如何切换成简体中文Sqlitestudio绿色版中文设置方法介绍
datagrip 格式化sql的实现方法(自定义sql格式化)
更多相关阅读请进入《Sqlite》频道 >>

数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。