0基础学Django

1. web程序的流程

2. mvc和mvt

2.1 MVT模式

2.2 mvc模式

3. 创建Django

3.1 创建工程

django-admin startproject name

3.2 创建子应用

python manager.py startapp name

  • admin.py文件跟网站的后台管理站点配置相关
  • apps.py文件用于配置当前子应用的相关信息
  • migrations目录用于存放数据库迁移历史文件
  • models.py文件用户保有数据库模型类
  • tests.py文件用于开发测试用例,编写单元测试
  • views.py文件用于编写Web应用视图。

3.3 注册子应用

4. ORM

  • 1.我们的模型类 需要维承自 models.Model
  • 2.系统会自动为我们添加一个主键--id
  • 3.字段
  • 字段名=model.类型(选项)
  • 字段名其实就是数据表的字段名
  • 字段名不要使用 python,mysql等关键字
  • char(M)
  • varchar(M)
  • M 就是选项

4.1 模型迁移 -建表

python manage.py makemigrations

python manage.py migrate

5.站点管理

6. 连接MYSQL

7. Django 模型

1. 数值字段 (Numeric Fields)

python

复制代码
# 整数字段
models.IntegerField()        # 整数
models.SmallIntegerField()   # 小整数
models.BigIntegerField()     # 大整数
models.PositiveIntegerField() # 正整数
models.PositiveSmallIntegerField() # 正小整数

# 浮点数字段
models.FloatField()          # 浮点数
models.DecimalField(max_digits=5, decimal_places=2) # 十进制数

# 布尔字段
models.BooleanField()        # 布尔值
models.NullBooleanField()    # 可空布尔值 (Django 3.1+ 已废弃,用 BooleanField(null=True) 代替)

2. 字符串字段 (String Fields)

python

复制代码
models.CharField(max_length=255)          # 字符串
models.TextField()                        # 长文本
models.SlugField()                        # URL 友好的字符串
models.URLField()                         # URL
models.EmailField()                       # 邮箱地址
models.UUIDField()                        # UUID

3. 日期和时间字段 (Date and Time Fields)

python

复制代码
models.DateField()                        # 日期
models.DateTimeField()                    # 日期时间
models.TimeField()                        # 时间
models.DurationField()                    # 时间间隔

4. 文件字段 (File Fields)

python

复制代码
models.FileField(upload_to='files/')      # 文件
models.ImageField(upload_to='images/')    # 图片
models.FilePathField(path='/path/to/files') # 文件路径

5. 关系字段 (Relationship Fields)

python

复制代码
models.ForeignKey('OtherModel', on_delete=models.CASCADE)      # 外键
models.ManyToManyField('OtherModel')                           # 多对多
models.OneToOneField('OtherModel', on_delete=models.CASCADE)   # 一对一

6. 其他字段 (Other Fields)

python

复制代码
models.BinaryField()                      # 二进制数据
models.GenericIPAddressField()            # IP 地址
models.JSONField()                        # JSON 数据 (Django 3.1+)

7. 自定义和第三方字段

python

复制代码
# 需要安装第三方库
from django.contrib.postgres.fields import ArrayField, HStoreField
ArrayField(models.IntegerField())         # PostgreSQL 数组字段
HStoreField()                             # PostgreSQL HStore 字段

完整示例

python

复制代码
class ExampleModel(models.Model):
    # 数值字段
    integer_field = models.IntegerField()
    small_integer = models.SmallIntegerField()
    price = models.DecimalField(max_digits=10, decimal_places=2)
    rating = models.FloatField()
    is_active = models.BooleanField(default=True)
    
    # 字符串字段
    title = models.CharField(max_length=200)
    description = models.TextField()
    slug = models.SlugField()
    website = models.URLField()
    email = models.EmailField()
    unique_id = models.UUIDField(default=uuid.uuid4, editable=False)
    
    # 日期时间字段
    created_date = models.DateField(auto_now_add=True)
    created_datetime = models.DateTimeField(auto_now_add=True)
    event_time = models.TimeField()
    
    # 文件字段
    document = models.FileField(upload_to='documents/')
    photo = models.ImageField(upload_to='photos/')
    
    # 关系字段
    category = models.ForeignKey('Category', on_delete=models.CASCADE)
    tags = models.ManyToManyField('Tag')
    user_profile = models.OneToOneField('UserProfile', on_delete=models.CASCADE)
    
    # 其他字段
    ip_address = models.GenericIPAddressField()
    settings = models.JSONField(default=dict)

常用字段参数

大多数字段都支持这些通用参数:

python

复制代码
models.CharField(
    verbose_name='显示名称',    # 可读名称
    max_length=100,           # 最大长度
    default='默认值',          # 默认值
    null=True,                # 数据库允许 NULL
    blank=True,               # 表单允许为空
    choices=CHOICES,          # 选择项
    unique=True,              # 唯一值
    db_index=True,            # 数据库索引
    help_text='帮助文本'       # 帮助文本
)
相关推荐
青 春 记 忆8 小时前
零基础入门python70:Docker Compose 编排完整后端
python·后端开发
新时代牛马9 小时前
字符设备驱动完整篇:从 cdev_add、file_operations 到chrdev_open 与排障
开发语言·python
白山编程大哥9 小时前
Java OutputStreamWriter 详解:从字符到字节的桥梁
java·开发语言·python
落羽的落羽10 小时前
【AI】快速理解AI应用的相关名词概念
linux·c++·人工智能·python·计算机网络·算法
Chasing__Dreams10 小时前
大模型应用开发--13--RAG 查询优化策略
python
“AI国潮设计-小江”10 小时前
《Python实战 | SDXL大模型批量生成“英歌舞海浪”蛋糕IP,附核心Prompt控制代码与IP授权变现思路》
人工智能·python·prompt·aigc
znnnk11 小时前
【Python】GUI 开发从入门到实战(三):PyQt/PySide 进阶之路
开发语言·python·pyqt
IT_陈寒11 小时前
Python的多线程就是个假把式,我算是体验到了
前端·人工智能·后端
码事漫谈11 小时前
如果 AI 要圈养人类,它可能不需要笼子
后端