任务一:搭建虚拟环境和项目,构建数据表
1. 创建一个Django项目,在指定目录创建一个空文件夹,这里我起名叫My_Django
。
2. 然后在 Anaconda Prompt 中创建一个虚拟环境,这里我起名叫django
3. 先激活刚创建的虚拟环境
`conda activate django`
然后当前的虚拟环境django
中安装 django等必要的包
pip install django
pip install djangorestframework
pip install django-filter
pip install drf_spectacular
4. 切换 Anaconda Prompt 工作目录到My_Django
文件夹下,创建项目
(base) C:\Users\Rongyao>conda activate django
(django) C:\Users\Rongyao>cd ..
(django) C:\Users>cd ..
(django) C:\>d:
(django) D:\>cd D:\常用文件\CQU\就业\深度学习\Datawhale\2023-8\Django4.2\My_Django
(django) D:\常用文件\CQU\就业\深度学习\Datawhale\2023-8\Django4.2\My_Django>django-admin startproject My_Django
(django) D:\常用文件\CQU\就业\深度学习\Datawhale\2023-8\Django4.2\My_Django>
在运行django-admin startproject My_Django
后,在 My_Django 下面多了一个My_Django
文件夹,在多出来的这个My_Django
文件夹下面有My_Django
和manage.py,说明运行成功!!!
5. 创建 app
先切换路径到多出来的My_Django文件夹下面,cd My_Django
然后继续在窗口运行:python manage.py startapp myApp
这时候会多出来一个myApp文件夹,说明运行成功!!!
注意:manage.py所在路径不要有中文,因为可能会出现编码错误
6. 设置setting.py文件
在My_Django文件夹下找到 setting.py
打开在INSTALLED_APPS中加入自己的app名字,并加入新安装的库:
'rest_framework',
'django_filters',
'drf_spectacular',
7. 启动项目
运行项目先执行数据库相关操作,再启动 django 项目
```bash
# 先执行数据库迁移相关操作
python manage.py makemigrations
python manage.py migrate
# 启动 django 项目
python manage.py runserver
```
启动之后,复制如下链接去浏览器打开
看到下面这样的界面,就说明成功启动了!!!
8. Django-构建数据表示例(合并数据库)
在myApp文件夹下,找到model.py文件
打开并添加内容:
## 产品分类表
class GoodsCategory(Model):
"""产品分类"""
name = CharField(max_length=64,verbose_name='分类名称')
remark = CharField(max_length=64,null=True,verbose_name='备注',blank=True)
## 产品表
class Goods(Model):
"""产品"""
# 外键
category = ForeignKey(GoodsCategory, on_delete=SET_NULL,related_name='goods_set',null=True,verbose_name='产品分类',blank=True,)
# on_delete
number = CharField(max_length=32,verbose_name='产品编号')
name = CharField(max_length=64,verbose_name='产品名称')
barcode = CharField(max_length=32,null=True,blank=True,verbose_name='条码')
spec = CharField(max_length=64,null=True,blank=True,verbose_name='规格')
shelf_life_days = IntegerField(null=True, verbose_name='保质期天数')
purchase_price = FloatField(default=0, verbose_name='采购价')
retail_price = FloatField(default=0, verbose_name='零售价')
remark = CharField(max_length=128, null=True, blank=True, verbose_name='备注')
"""
CharField:用于存储字符串类型,有最大长度限制
IntegerField:用于存储整数类型
FloatField:用于存储浮点数类型
BooleanField:用于存储布尔类型
DateField:用于存储日期类型
DateTimeField:用于存储日期和时间类型
ImageField:用于存储图片类型
FileField:用于存储文件类型
ForeignKey:外键 用于表示数据库表之间的关联关系
OneToOneField:一对一 用于表示一对一的关联关系
ManyToManyField:多对多 用于表示多对多的关联关系
max_length:字段的最大长度限制,可以应用于多种不同的字段类型。
verbose_name:字段的友好名称,便于在管理员后台可视化操作时使用。
default:指定字段的默认值。
null:指定字段是否可以为空。null=True 设置允许该字段为 NULL 值
blank:指定在表单中输入时是否可以为空白。
choices:用于指定字段的可选值枚举列表。
related_name:指定在多对多等关系中反向使用的名称。
on_delete:指定如果外键关联的对象被删除时应该采取什么操作。
"""
然后保存退出,重新运行下面的命令:
python manage.py makemigrations
python manage.py migrate
这两个命令是Django框架中的关键命令,用于进行数据库迁移。当你修改了Django模型后,你需要运行这两个命令,以将这些更改应用到数据库中。
python manage.py makemigrations
: 这个命令用于生成迁移脚本。当你更新了模型文件之后,需要运行该命令,Django会检测模型的改变,然后自动生成相应的迁移脚本,存储在migrations/
目录下。通常来说,你需要针对每个应用运行一次该命令。python manage.py migrate
: 这个命令用于将迁移脚本应用到数据库中。当你在模型文件中进行更改之后,需要先通过makemigrations
命令生成迁移脚本,然后运行该命令将这些脚本应用到数据库中。对于新的迁移脚本,Django会逐个执行它们,从而更新数据库结构。对于已经执行过的脚本,Django会跳过它们,避免重复执行。这两个命令是Django框架中非常重要的命令,在修改数据库相关内容时必须时刻清醒地记住使用它们。
重新启动 django 项目
python manage.py runserver