虚拟环境、项目
创建新用户:python manage.py createsuperuser(账号密码)
安装虚拟环境:pip install virtualenv
创建目录并进入:mkvirtualenv 名字
退出:deactivate
创建目录:virtualenv 目录名
激活:activate
创建项目:django-admin startproject 项目名
创建应用:python manage.py startapp 应用名
启动Django(固定的):Python manage.py runserver
Http响应状态码
100 继续;客户端继续其请求
101 切换协议
200 成功
201 已创建·
202 已接收但未处理
203 无授权信息服务器成功处理,但返回信息可能来自另一个来源
204 无内容 服务器已成功处理了请求,但没有返回任何内容
205 重置内容 服务器已成功处理,浏览器应重置文档视图
206 部分内容 服务器成功处理了get部分
300 多种选择 针对请求,服务器可执行多种操作。
301 永久移动 请求的网页已永久移动到新位置。
302 临时移动
303 查看其他位置
304 未修改 自从上次请求后,请求的网页未修改过。
305 使用代理 请求者只能使用代理访问请求的网页。
306 已经被废弃的HTTP状态码
307 临时重定向
400 错误请求 服务器不理解请求的语法。
401 未授权 请求要求身份验证。
403 禁止 服务器拒绝请求。
404 未找到 服务器找不到请求的网页。
405 方法禁用 禁用请求中指定的方法。
406 不接受 无法使用请求的内容特性响应请求的网页。
407 需要代理授权
408 请求超时 服务器等候请求时发生超时。
409 冲突 服务器在完成请求时发生冲突。
410 已删除 如果请求的资源已永久删除,服务器就会返回此响应。
411 需要有效长度 服务器不接受不含有效内容长度标头字段的请求。
412 未满足前提条件 服务器未满足请求者在请求中设置的其中一个前提条件。
413 请求实体过大 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
414 请求的 URI 过长 请求的 URI(通常为网址)过长,服务器无法处理。
415 不支持的媒体类型 请求的格式不受请求页面的支持。
416 请求范围不符合要求 如果页面无法提供请求的范围,则服务器会返回此状态代码。
417 未满足期望值 服务器未满足"期望"请求标头字段的要求。
500 服务器内部错误 服务器遇到错误,无法完成请求。
501 尚未实施 服务器不具备完成请求的功能。
502 错误网关 服务器作为网关或代理,从上游服务器收到无效响应。
503 服务不可用 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。
504 网关超时 服务器作为网关或代理,但是没有及时从上游服务器收到请求。
505 HTTP 版本不受支) 服务器不支持请求中所用的 HTTP 协议版本。
orm对象映射关系
类对应的数据库
类名对应表名
类的属性对应字段
类的对象对应行数据
orm操作
迁移库:第一步:python manage.py makemigrations (记录迁移)
第二步:python manage.py migrate (执行迁移)
Django orm 将数据表变更记录转换成原生Sql的命令:python mange.py sqlmigrate
进入python:python manage.py shell
导入:from 应用名.models import 表名
查看:表名.objects.all()
增加:表名.objects.create(字段名=“”,字段名=“”)
修改:1.表名.objects.filter(id=).update(字段名=“”)
2.name=表名.objects.get(id=) name.字段名=“” name.save()保存(必须保存)
删除:表名.objects.filter(id=).delete()
orm常用字段类型
字符类型:CharField() 必须提供max_length参数 max_length表示最大值
例:name=models.CharField(max_length=32,verbose_name='团队名称')
verbose_name:Django Admin管理后台页面上显示的字段名
自增int类型:AutoField()例:name= models. AutoField()
邮件类型:EmailField 例:name=models. EmailField()
文本类型:TextField 例:name=models. TextField()
小数类型:DecimalField 例:name=models. DecimalField()
总位数:max_length=? 小数点位数:decimal_places=?
整数类型:IntegerField 例:name=models. IntegerField()
日期字段:DateField
例:name=models. DateField (auto_now=False,auto_now_add=False)
auto_now表示自动保存当前日期(最后修改时间)
auto_now_add表示对象创建的时间
时间字段:TimeField
例:name=models. TimeField (auto_now=False,auto_now_add=False)
布尔:BooleanField
例:name=models. BooleanField
日期时间字段:DateTimeField
例:name=models. DateTimeField (auto_now=False,auto_now_add=False)
外键:ForeignKey
例:name=models. ForeignKey(‘外键表名’, on_delete=models.CASCADE)
on_delete:当关联表的记录被删除时,本表的记录会如何处理
models.CASCADE:删除所有相关的记录
models.SET_DEFAULT:设置为默认值 需要指定default选项
models.SET_NULL:将关联字段的值设置为NULL
把上传的文件的路径保存在数据库中:FileField
例:name=models. FileField(upload_to='test/')
upload_to指明上传文件的保存路径
把上传的图片的路径保存在数据库中:ImageField
例:name=models. ImageField(upload_to='pic/')
orm常用字段属性
数据库表索引:db_index: db_index=True
例:name=models.CharField(max_length=32, db_index=True)
不能有重复值:unique: unique= True
例:name=models.CharField(max_length=32, unique= True)
设置字段默认值:default
例:name=models.CharField(max_length=32, default=‘默认值’)
注释:verbose_name
例:name=models.CharField(max_length=32, verbose_name =‘注释’)
主键:primary_key=True
例:name= models.AutoField(primary_key=True)
字段可以为空:null= True
例:name=models.CharField(null=True)
唯一:unique=True
例:name=models.CharField(unique =True)
例1:SEX=(('男','男'),('女','女'))
sex=models.CharField('学生性别',max_length=4,choices=SEX,default='男')
choices:从外面定义中选择 default:默认
orm查询语句
查询id大于某个数的记录:id__gt='数'
例:User.objects.filter(id__gt=2)
查询id大于等于某个数的记录:id__gte='数'
查询id小于某个数的记录:id__lt='数'
查询id小于等于某个数的记录:id__lte='数'
查询id等于某个数的记录:id__in='数' 多个:id__in='[数,数,数]'
查询包含某个字符串的记录:字段名__contains='字符串'
查询包含某个字符串的记录,忽略大小写:字段名__ icontains ='字符串'
查询字段中月份为某个月的记录:字段名__ month=‘数’
排序:表名.objects.all().order_by('-字段名') 加‘-’倒序
限制条数:表名.objects.all()[数:数]
获取总条数:表名.objects.all().count()
Meta模式
class Meta:
db_table = 'grade'#指定数据表名称
verbose_name = '成绩'#表名的备注
ordering=['-字段名']#定义查询数据的排序规则 加‘-’倒序
admin里
list_display = (‘字段名’,‘字段名’):要展示的信息
list_display_links= (‘字段名’,‘字段名’):点击那些信息可以进入编辑页面
search_fields= (‘字段名’,‘字段名’):指定要搜索的字段,将会出现一个搜索框让管理员搜索关键词
list_filter= (‘字段名’,‘字段名’):指定列表过滤器,右边将会出现一个快捷的过滤选项
分页器
导入Paginator类,用于创建分页器:from django.core.paginator import Paginator
from 应用名.models import 类名
获取所有对象,引用数据:evet_list=类名.objects.all() evet_list:变量名
创建分页器,一页两个数据:p=Paginator(evet_list,2)
一共有多少数据:p.count
一共有多少页:p.page_range
获取第二页:page2=p.page(2)
获取第二页的列表:page2.object_list
获取第一条数据:page2.start_index()
获取最后一条数据:page2.end_index()
是否有上一页:page2.has_previous()
是否有下一页:page2.has_next()
上一页的页码:page2.previous_page_number()
下一页的页码:page2.next_page_number()
当前页:page2.number