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
相关推荐
wn5319 分钟前
【Go - 类型断言】
服务器·开发语言·后端·golang
Narutolxy19 分钟前
Python 单元测试:深入理解与实战应用20240919
python·单元测试·log4j
希冀12333 分钟前
【操作系统】1.2操作系统的发展与分类
后端
Amo Xiang42 分钟前
2024 Python3.10 系统入门+进阶(十五):文件及目录操作
开发语言·python
liangbm31 小时前
数学建模笔记——动态规划
笔记·python·算法·数学建模·动态规划·背包问题·优化问题
GoppViper1 小时前
golang学习笔记29——golang 中如何将 GitHub 最新提交的版本设置为 v1.0.0
笔记·git·后端·学习·golang·github·源代码管理
B站计算机毕业设计超人1 小时前
计算机毕业设计Python+Flask微博情感分析 微博舆情预测 微博爬虫 微博大数据 舆情分析系统 大数据毕业设计 NLP文本分类 机器学习 深度学习 AI
爬虫·python·深度学习·算法·机器学习·自然语言处理·数据可视化
羊小猪~~1 小时前
深度学习基础案例5--VGG16人脸识别(体验学习的痛苦与乐趣)
人工智能·python·深度学习·学习·算法·机器学习·cnn
爱上语文2 小时前
Springboot的三层架构
java·开发语言·spring boot·后端·spring
serve the people2 小时前
springboot 单独新建一个文件实时写数据,当文件大于100M时按照日期时间做文件名进行归档
java·spring boot·后端