1 .启动项目
任务栏启动
>>> python manage.py runserver
>>> python manage.py runserver 0.0.0.0:8888
创建 app, 新添加的app名字, appname
>>>python manage.py startapp appname
生成和同步数据库
python manage.py makemigrations #可以指定应用,只执行指定应用。不建议使用
python manage.py migrate
python manage.py createsuperuser # 创建超级管理员
django ——————models
常用字段类型
字段类型 | Value |
---|---|
CharField | 字符串 |
TextField | 字符串,大文本, 文本域, |
DateField | 日期类型 |
DateTimeField | 日期+时间 |
BooleanField | 真假 |
NullBooleanField | 真假+ Null |
IntegerField | 整数类型 |
PositiveIntegerField | 正整数 |
DecimalField | 小数 |
ImageField | 图片 |
AutoField | 自动递增 用于主键 , 一个表中只有一个主键 |
EmailField | 邮箱 |
UUIDField | 通用的唯一识别码 |
多表关系信息
多表关系 | Value |
---|---|
ForeignKey | 1:n ,一对多,班级与学生 |
ManyToManyField | n:n 多对多,学生与课程 |
OneToOneField | 1:1 ,一对一,人与身份证 |
属性 on_delete | 级联删除,如删除班级时,删除所有班级内的学生信息 |
# 一对一关系表
class Studer(models.Model):
ano = models.AutoField(primary_ker=True)
class Scard(models.Model):
student = models.OneToOneField(Studer,primary_key=True,on_delete=models.CASCADE )
创建字段时可选类型
字段属性 | Value |
---|---|
max_length | 限制长度信息 |
primary_key | 主键 True |
unique | 是否能重复 True |
auto_now_add | 第一次插入数据时 添加当前时间,True |
auto_now | 更新时插入时间 True |
default | 默认值 ,是否逻辑删除 |
max_digits | 小数位数总长度 |
decimal_places | 小数点后长度 |
upload_to | 上传文件或图片指定存储地址 |
null | 是否非空字符串 |
# 自定义表名
class Meta:
db_table = "t_post"
映射到数据库时取决于settings中的databases值
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', #链接数据库类型
'NAME': 'mydatabase', # 数据库名
'USER': 'root', # 用户名
'PASSWORD': 'mypassword',
'HOST': '127.0.0.1', # 地址
'PORT': '3306', # 接口
}
}
原文件上添加字段, 删除迁移文件个数据库迁移信息。删除表
操作数据信息
字段 | Value |
---|---|
objects.create() | 添加数据 |
a.objects.filter() | 返回一个QuerySet包含与给定查找参数匹配的新对象 |
a.objects.exclude() | 返回除给定参数外的 对象 |
a.objects.get() | 查询一个,找不时报错 |
a.objects.all() | 查询所有 |
order_by() | 返回结果进行排序 ,‘-’表示降序 |
first() | 取符合条件的第一个 |
例exclude() 判断QuerySet对象是不是为空
# 排除所有pub_date迟于2005-1-3headline且“ Hello”的条目
Entry.objects. (pub_date__gt=datetime.date(2005, 1, 3), headline='Hello')
#排除所有pub_date迟于2005-1-3或标题为“ Hello”的条目
Entry.objects.exclude(pub_date__gt=datetime.date(2005, 1, 3)).exclude(headline='Hello')
objects取值
# .values()将未重写的modin类的通过objects直接取值,不在获取queryset对象
name = Users.objects.filter(name=b['name']).values()
一对多
一 :为主表,
多 :为从表
外键ForeignKey添加在从表中
查询结果为多个时加 .all()
数据库的操作
添加数据信息
保存方式例:
# 添加数据 直接使用 create 添加
a_num2 = models.num.objects.create(name=name, password=password)
# 创建实例后用save(), 保存数据
a_num = models.num(name=name, password=password)
a_num.save()
删除数据信息