毕业工作一年以来,对于Django的学习还停留在学校,偶然看到这次学习活动,遂当做爱好重新学起来
一、新建Python配置Django运行环境
- 从
Python
官网下载https://www.python.org/downloads/Python3.11
,安装时添加至本地环境 - 使用
venv
新建一个Python
环境
python -m venv DjangoEnv
- 启动
DjangoEnv
环境
PS C:\Users\17520\Desktop\DataWhaleLearning> .\DjangoEnv\Scripts\activate
(DjangoEnv) PS C:\Users\17520\Desktop\DataWhaleLearning> # 出现此表示已经激活当前的Python环境,此后即可使用此环境
-
并安装本次学习的所需模块
- 安装
Django
,Django
是一个Python web
框架,提供许多功能,如ORM
、认证、表单、模板等,它可以帮助你更快、更轻松地开发web
应用程序。
pip install django
- 安装
DRF
,DRF
是一个基于Django
的强大而灵活的RESTful
框架,它提供了许多工具和库,可帮助你快速开发基于RESTful API
的web
应用程序。
pip install djangorestframework
- 安装
Django-Filter
,介绍:Integration with DRF — django-filter 23.2 documentation,Django-Filter
是一个基于Django
的库,它提供了一种简单、灵活的方式来过滤Django
模型的查询集。Django-Filter
的API
允许开发者使用简单的查询表达式,构建和应用复杂的过滤器,从而在查询集中选择和排除数据。Django-Filter
通过与DRF Spectacular
的集成,支持OpenAPI
规范表述的数据过滤和查询,提供了更加优雅的API
规范方案。
pip install django-filter
- 安装
Django Spectacular
,介绍:DRF Spectacular
是DRF
的OpenAPI
规范工具。它可以自动构建和生成OpenAPI
规范文档,并提供方便的API
测试工具,使你能够更加轻松地创建、测试和维护RESTful API
。同时,它也支持集成Django Filter
,允许你通过URL
参数过滤查询数据。
pip install drf_spectacular
- 安装
drf-spectacular
,根据你DRF API
代码生成API
文档。 它提供了多种配置选项,使开发者能够自定义自动生成的API
文档的内容和样式。
pip install drf-spectacular
- 安装
-
练习,安装
debug-toolbar
和django-extensions
库
pip install django-debug-toolbar django_extensions
- 退出
DjangoEnv
环境
deactivate
- 导出当前
DjangoEnv
环境所安装的包
pip freeze > requirements.txt
- 在新建的
Python
环境批量安装导出的包
pip install -r requirements.txt
- 批量卸载当前
Python
环境安装的包
# -y 表示同意,无需提示输入确定
pip uninstall -r requirements.txt -y
二、创建 Django 项目和 APP
- 创建
Django
项目config
,新建后修改外层config
为MyDRF
(个人习惯)
django-admin startproject config
- 指定路径创建
app
应用(开始)
# 进入新建的MyDRF项目
cd MyDRF
# 创建文件夹apps
mkdir apps
# 创建mydrf应用
python manage.py startapp mydrf
# 将mydrf应用放入到apps文件夹中
cd apps
django-admin startapp appname
- 修改
apps/mydrf/apps.py
文件,指定路径创建app
应用(结束)
from django.apps import AppConfig
class MydrfConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'apps.mydrf'
三、配置 settings.py 和 启动项目
settings.py
添加应用(新建的和所需的)
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 新增应用
'apps.mydrf',
'rest_framework',
'django_filters',
'drf_spectacular',
]
- 启动
Django
项目,注意进入含有manage.py
文件的目录执行
# 7777 为指定端口,不添加则为默认为8000端口
python manage.py runserver 7777
四、Django构建数据表
- 在
apps/mydrf/models.py
中构建数据表
from django.db.models import *
# Create your models here.
## 产品分类表
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
: 这个命令用于生成迁移脚本。当你更新了模型文件之后,需要运行该命令,Django
会检测模型的改变,然后自动生成相应的迁移脚本,存储在migrations/
目录下。通常来说,你需要针对每个应用运行一次该命令。python manage.py migrate
: 这个命令用于将迁移脚本应用到数据库中。当你在模型文件中进行更改之后,需要先通过makemigrations
命令生成迁移脚本,然后运行该命令将这些脚本应用到数据库中。对于新的迁移脚本,Django
会逐个执行它们,从而更新数据库结构。对于已经执行过的脚本,Django
会跳过它们,避免重复执行。- 这两个命令是
Django
框架中非常重要的命令,在修改数据库相关内容时必须时刻清醒地记住使用它们。
python manage.py makemigrations
python manage.py migrate