接上一篇内容,在这篇中我们将介绍Django中数据库的配置,模型以及站点管理。
在Django中内嵌了ORM框架,我们不需要直接面向数据库编程,而是定义模型类,通过模型类和对象完成数据表的增删改查操作。
使用django进行数据库开发的步骤如下:
1.在models.py中定义模型类
2.迁移
3.通过类和对象完成数据增删改查操作
在beardata_sys/models.py中定义User模型类,本例中只是示意定义了几种数据类型,后续会详细介绍数据库字段类型。
from django.db import models
class User(models.Model):
""" 用户模型类 """
# 用户名
username = models.CharField(max_length=50)
# 密码
password = models.CharField(max_length=100)
# 年龄
age = models.IntegerField()
# 创建时间
create_time = models.DateTimeField('date published')
在配置文件beardata/settings.py中配置应用
INSTALLED_APPS = [
'beardata_sys.apps.BeardataSysConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
生成迁移文件
python manage.py makemigrations beardata_sys
执行完迁移命令之后,目录结构如下,会在beardata_sys/migrations包下是生成迁移文件
迁移文件转换为SQL脚本
python manage.py sqlmigrate 应用模块名 文件编号
如 python manage.py sqlmigrate beardata_sys 0001
python manage.py migrate
Django默认的数据库为sqlite,在项目的根目录下会有一个db.sqlite3的文件,我们通过工具打开查看,数据库表已生成。
我们已经在上述步骤中执行了迁移并生成了库表结构,接下来我们通过Django提供的shell功能进行简单的数据库API操作。
进入项目的shell
python manage.py shell
from beardata_sys.models import User
查询表中数据
User.objects.all()
Django默认为我们提供了后台管理的功能。
修改settings.py文件
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
python manage.py createsuperuser
注:输入用户名,邮箱,密码,其中密码至少8位字符串
启动服务,并访问 http://127.0.0.1:8000/admin
登录成功后出现如下界面
登录后台管理后,默认没有我们创建的应用中定义的模型类,需要在自己应用中的admin.py文件中注册,才可以在后台管理中看到,并进行增删改查操作。
打开beardata_sys/admin.py文件,编写如下代码:
from django.contrib import admin
from .models import User
admin.site.register(User)
刷新浏览器
点击类名称"User"可以进入列表页,默认只有一列。
在列表页中点击"增加"可以进入增加页,Django会根据模型类的不同,生成不同的表单控件,按提示填写表单内容后点击"保存",完成数据创建,创建成功后返回列表页。
在列表页中点击某行的第一列可以进入修改页。
按照提示进行内容的修改,修改成功后进入列表页。在修改页点击“删除”可以删除一项。
也可以在列表页勾选想要删除的复选框,可以删除多项。
在列表页只显示出了User object,对象的其它属性并没有列出来,查看非常不方便。 Django提供了自定义管理页面的功能,比如列表页要显示哪些值。
打开beardata_sys/admin.py文件,自定义类,继承自admin.ModelAdmin类。
属性list_display表示要显示哪些属性
class UserAdmin(admin.ModelAdmin):
list_display = ['id', 'username', 'age', 'create_time']
修改模型类User的注册代码如下
admin.site.register(User, UserAdmin)
刷新User的列表页,所有属性都显示出来了。
最终beardata_sys/admin.py文件代码如下
from django.contrib import admin
from .models import User
class UserAdmin(admin.ModelAdmin):
list_display = ['id', 'username', 'age', 'create_time']
admin.site.register(User, UserAdmin)