Django入门

Day1 django环境安装

创建虚拟环境

python 复制代码
# step1 创建虚拟环境
python3 -m venv datawhale_django
# step2 mac进入虚拟环境
source ./datawhale_django/bin/activate
# step3 退出虚拟环境
deactivate

安装包

python 复制代码
pip3 install django
​pip3 install djangorestframework​​
pip3 install django-filter
pip3 install drf_spectacular
pip3 install django-debug-toolbar​​
pip3 install django_extensions

Day2 Django启动

安装项目&app

python 复制代码
# step1:创建django项目
django-admin startproject erp
# step2: erp项目中创建app,以下会创建两个app:data & purchase
django-admin startapp data
django-admin startapp purchase

需要将项目和已安装的app相关联,目的:在项目中找到对应的app

django项目启动&运行

python 复制代码
# 以下两个命令在后面进行讲解
python3 manage.py makemigrations
python3 manage.py migration
# 项目运行
python3 manage.py runserver

Day3 数据库

django数据库基础

常用字段

python 复制代码
CharField: 用于存储字符串类型,有最大长度限制
IntegerField:用于存储整数类型
FloatField:用于存储浮点数类型
BooleanField:用于存储布尔类型
DateField:用于存储日期类型
DateTimeField:用于存储日期和时间类型
ImageField:用于存储图片类型
FileField:用于存储文件类型
ForeignKey:外键用于表示数据库之间的关联关系
OneToOneField:一对一用于表示一对一的关联关系
ManyToManyField:多对多,用于表示多对多的关联关系

常用配置

python 复制代码
max_length:字段的最大长度限制,可以应用于多种不同的字段类型
verbose_name:字段的友好名称,便于在管理员后台可视化操作时使用
default:指定字段的默认值
null:指定字段是否可以为空,null=True设置允许该字段为NULL值
blank:指定在表单中输入时是否可以为空白
choices:用于指定字段的可选值枚举列表
class DeliveryMaterial(Model):
    """复核产品"""

    class Status(TextChoices):
        """状态"""

        QUALIFIED = ('qualified', '良品')
        UNQUALIFIED = ('unqualified', '不良品')

    status = CharField(max_length=32, choices=Status.choices, default=Status.QUALIFIED, verbose_name='状态')

TextChoices:用于在模型字段中创建可选择的,文本值的选项
related_name:指定在多对多等关系中反向使用的名称
on_delete:指定如果外键关联的对象被删除时应该采取什么操作

在app中创建相关的数据表

python 复制代码
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:指定如果外键关联的对象被删除时应该采取什么操作。
"""

在admin中注册数据集

python 复制代码
from django.contrib import admin

# Register your models here.
from .models import *


admin.site.register(GoodsCategory)
admin.site.register(Goods)

表结构写好生成数据表之后,不建议修改表结构,问题:修改之后,重新执行语句,甚至删库之后,重新生成表结构,都会导致数据提交失败,暂时没找到方法修改数据表

添加管理员

python 复制代码
python3 manager.py createsuperuser
# 登录 127.0.0.1:8080/admin
相关推荐
子兮曰1 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰1 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
默_笙1 天前
🍙 给每个请求过安检:FastAPI 是怎么把校验写进类型注解的
python
爱勇宝1 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
qq_426003961 天前
启动playwright录制codegen生成自动化测试脚本
python·自动化
虎头金猫1 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
胡写代码1 天前
别再前后端各写一套表单校验了
java·后端
长沙三为智能科技1 天前
家政小程序开发从0到上线:五阶段交付流程与验收清单
python
伞伞悦读1 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
大勇前进1 天前
原生 PHP 还是 Laravel?小项目到底要不要上框架
后端