目录
Django3.1.5在2021年1月4号发布,小修小补的版本,本笔记第二部分接着第一部分结尾,记录练习简单的创建和管理模型的过程
一、根据需求,思考我们需要创建什么数据模型?
首先数据模型的作用是指导我们的数据库根据我们的需求数据模板,来指向性创建数据表存储我们需求的数据到数据库中。
我们可以在脑海里先想一想,日常哪些网站比较常见,以购物网站为例子,平常淘宝、京东、拼多多
那么一个购物网站里面都会有什么网页单元呢? 商品基本信息,商品详细介绍,用户基本信息,购物车订单信息等等
我们以 商品基本信息 和 商品详细介绍 作为练习的应用模板
我们需要考虑一下商品基本信息都会有哪些元素?商品详细介绍又会有哪些元素?如下表为测试参考
商品基本信息(Products) | 商品详细介绍(Profiles) |
---|---|
商品ID | 商品ID |
商品主图 | 商品名称 |
商品名称 | 上架日期 |
商品价格 | 商品销量 |
商品区域 | 商品详细参数 |
商家名称 | 商品详情页 |
接下来我们透过django-admin或者原bootcamp下的manage.py的startapp指令来创建我们的两个应用模板
python .\manage.py startapp products
python .\manage.py startapp profiles
可以看到我们透过指令完成了对products和profiles两个应用的创建,如上图所示。
二、开始创建我们的模型
根据前面我们对产品的属性整理,我们一对一的开始操作属于products的数据模型。
首先展开products的应用文件夹,找到models.py,选中它,VSCode正常会打开该文件,可以看到如下图
默认django就为我们从django数据库db中导入了models类
根据我们前面信息元素来为我们创建商品基本信息的Product的数据模型,具体模型属性该使用什么数据字段(Field),可以参考以下模板,后面会慢慢介绍models都会有哪些常用字段
class Product(models.Model):
id = models.AutoField(primary_key=True) # 商品的ID
title = models.CharField('商品名称',max_length=100) # 商品名称
price = models.FloatField('商品价格') # 商品价格
area = models.CharField('商品区域',max_length=50) # 商品区域
company_name = models.CharField('商家名称',max_length=50) # 商家名称
同样的商品详细介绍的数据模型也根据我们前面信息元素创建Profile的数据模型, 这里的blank=True表面允许创建时该字段为空白,maxlength属性限制该字符域的最大输入字符数
这里简单介绍一下models里面几个常用的字段类型, 详见可以看看官方的文档:传送门
- AutoField: 字段类型为整数,根据可用的 ID 自动递增,长度为11位。
- BooleanField: 一个 True/False 字段。默认值是
None
。 - CharField:一个字符串字段,适用于小到大的字符串。
- DateField: 一个日期类型,在 Python 中用一个
datetime.date
实例表示。 - DateTimeField:一个日期和时间类型,在 Python 中用一个
datetime.datetime
实例表示。 - EmailField:一个
CharField
,使用EmailValidator
来检查该值是否为有效的电子邮件地址。 - FloatField: 在 Python 中用一个
float
实例表示的浮点数。 - JSONField: 一个用于存储 JSON 编码数据的字段。在 Python 中,数据以其 Python 本地格式表示:字典、列表、字符串、数字、布尔值和
None
。 - IntegerField:一个整数。从
-2147483648
到2147483647
的值在 Django 支持的所有数据库中都是安全的。 - GenericIPAddressField: IPv4 或 IPv6 地址,字符串格式(如
192.0.2.30
或2a02:42fe::4
)。该字段的默认表单部件是一个TextInput
。 - TextField:一个大的文本字段。该字段的默认表单部件是一个
Textarea
。 - TimeField:一个时间,在 Python 中用
datetime.time
实例表示。接受与DateField
相同的自动填充选项。 - FileField: 一个文件上传字段,可选参数 upload_to 来指定上传的路径
- ImageField:继承
FileField
的所有属性和方法,但也验证上传的对象是有效的图像。除了FileField
的特殊属性外,ImageField
也有height
和width
属性。 - FilePathField: 一个
CharField
,其选择仅限于文件系统中某个目录下的文件名。第一个参数path
是 必须的。 - URLField: URL 的
CharField
,由URLValidator
验证。
三、安装、激活、迁移我们的数据模型
首先我们找到主项目的settings.py文件,在使用我们的模型前,我们需要将他们安装到我们的主项目中
在settings.py文件中找到INSTALLED_APPS配置中添加我们两个app的名称。
接下来我们在主项目文件夹路径下输入以下指令来为我们新增的两个模型做一个迁移前的检查
python .\manage.py makemigrations
可以看到django发现我们新增的两个模型,并且完成了生产迁移的操作。
如果你好奇迁移的结果,可以在每个app内的/migrations/0001_initial.py
里看到首次迁移后的结果。
接着我们执行以下指令来应用数据库迁移
python .\manage.py migrate
四、总结改变模型的步骤
Django改变模型需要三个步骤:
- 编辑
models.py
文件,改变模型。 - 运行
python manage.py makemigrations
为模型的改变生成迁移文件。 - 运行
python manage.py migrate
来应用数据库迁移。
五、将模型加入管理界面中
为了方便我们可以在后台对我们的数据进行修改调整,我们可以将我们新增的两个模型注册到模型对应的admin.py中
首先要导入应用中的models中的模型类,然后透过admin.site.register(模型类名称)来加入admin界面。
六、创建管理员账号
接下来我们跑一跑django的服务器,来看看后台管理界面有啥变化
首先我们需要创建超级用户,输入以下指令:
python .\manage.py createsuperuser
会出来一系列Username,Email和两次Password的输入请求,如果密码太简单或小于8位字符还会提示你是否坚持创建账户
创建完成后提示successfully
七、运行django服务器,访问后台admin查看管理界面
接下来我们来运行django的服务器,使用以下指令操作来运行django服务器
python .\manage.py runserver
默认是8000端口,自定义端口的话可以在runserver命令后面加上你指定的端口号
接下来我们打开浏览器来访问该网址http://127.0.0.1:8000/ ,按住ctrl键,鼠标点击终端的地址即可打开网页
我们来访问一下admin界面,只需在地址栏加入/admin即可, 跳转到一个django的管理后台登录界面
输入我们刚刚创建的账号和密码后点登录
可以看到我们进入了后台管理界面,右上角有用户名,下面可以看到我们创建的两个应用显示在管理界面,我们进去看看
,
我们点击Products的Add按钮来添加商品,可以看到我们创建的数据模型包含名称显示了出来,我们随便填点数据后点save保存
提示添加成功,接下来我们来看看该产品的数据是如何的
可以看到数据保存成功,查看的时候也是按照数据模型的格式进行显示,通过后台也可以修改数据,删除数据。非常方便
同样的我们看看产品详细介绍的添加界面,因为这里我没有指定上传文件的路径,访问图片是会出错的,仅展示过程
以上便是本次笔记的全过程,如果不准确的地方还请多多指点