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

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='帮助文本' # 帮助文本
)