Django笔记06

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 }}
原文地址:https://www.cnblogs.com/LinChengcheng/p/10738424.html