chocie
choices = ((1,"男"),(2,"女"),(3,"保密"))
gender = models.IntegerField(choices=choices)
user_obj.get_gender_display()
# 获取具有choice属性的字段对应的解释,固定用法
# get_字段_display()
MTV
Django是MTV模式的框架
M:models
T:templates
V:views
MVC
M:models
V:views
C:controller(url + views)
本质上MTV就是MVC
ManyToManyField
多对多关系三种创建方式
第一种ManyToManyField()自动创建第三张表
第二种纯手动
class Book(models.Model):
name = models.CharField(max_length=32)
class Author(models.Model):
name = models.CharField(max_length=32)
class Book_to_Author(models.Model):
book = models.ForeignKey(to="Book")
author = models.ForeignKey(to="Author")
第三种与自动创建相同,可以自己增加额外的字段
class Book(models.Model):
name = models.CharField(max_length=32)
authors = models.ManyToManyField(to="Author",through="Book_to_Author",through_fields=("book","author"))
class Author(models.Model):
name = models.CharField(max_length=32)
class Book_to_Author(models.Model):
booke = models.ForeignKey(to="Book")
author = models.ForeignKey(to="Author")
Ajax
前端朝后端发送请求的方式
a标签href GET请求
浏览器输入ulr GET请求
form表单 GET/POST请求
Ajax GET/POST请求
前端朝后端发送数据的编码格式
contentType参数,用来标识前端反射数据的编码格式
Urlencoded:是form表单和ajax提交数据默认的编码格式(request.POST获取)
fromdata:文件提交编码(request.FILES获取)
appliction/json:json格式(request.body)
ajax特点:
1 异步提交 2 局部刷新
ajax与form表单的不同点
1 from表单提交的数据格式只能是urlencoded和formdata,不支持json格式
2 from表单提交数据,页面刷新
3 ajax局部刷新,异步提交,并且支持发送json格式数据
ajax提交数据必备的参数
url 提交到哪里
type 提交方式
data 提交的数据
提交后端处理之后的结果 (异步回调)success:function(data){}
ajax提交json格式数据
contentType:"application/json"
使用JSON.stringify包裹数据
编码格式与数据类型必须一致
ajax提交文件
1 不写使用内置对象:FormData
2 获取input框文件对象:$("")[0].files[0]
3 指定两个参数为false:
processData:false 让后端不处理数据
contentType:false 让后端使用formdata内部数据格式
4 后端用request.FILES获取文件对象
批量插入数据
li = []
for i in range(1000):
li.append(models.Book(name="第%s本书"%i))
models.Book.objects.bulk_create(li)
分页器
固定用法,获取数据当前想访问的页面
page = request.GET.get('page',1)
实例化分页器对象
page_obj = Pagination(current_page=page,all_count=book_queryset.count())
对总数据对象进行切片
page_querset = book_queryset[page_obj.start:page_obj.end]
前端使用
{{ page_obj.page_html|safe }}