zoukankan      html  css  js  c++  java
  • Django与Ajax

    MTV与MVC

    MTV模型(django):
    M:模型层(models.py)
    T:templates
    V:views
    MVC模型:
    M:模型层(models.py)
    V:视图层(views.py)
    C:控制器(Controller) urls.py
    本质:django的MTV也是MVC

    多对多表三种创建方式

    1.第一种 django orm自动帮我们创建(符合orm查询,但是无法扩展)
    class Book(models.Model):
      name = models.CharField(max_length=32)
      authors = models.ManyToManyField(to='Author')


    class Author(models.Model):
      name = models.CharField(max_length=32)

    2.第二种纯手动创建第三张表(可扩展,但是不符合orm查询)

    class Book(models.Model):
      name = models.CharField(max_length=32)

    class Author(models.Model):
      name = models.CharField(max_length=32)

    class Book2Author(models.Model):
      book = models.ForeignKey(to='Book')
      author = models.ForeignKey(to='Author')
      info = models.CharField(max_length=32)

    3.第三种半自动创建第三张表(可扩展性高,并且能够符合orm查询)
    class Book(models.Model):
      name = models.CharField(max_length=32)
    # 第三种创建表的方式
      authors = models.ManyToManyField(to='Author',through='Book2Author',through_fields=('book','author'))

    class Author(models.Model):
      name = models.CharField(max_length=32)
    # book = models.ManyToManyField(to='Book',through='Book2Author',through_fields=('author','book'))


    class Book2Author(models.Model):
      book = models.ForeignKey(to='Book')
      author = models.ForeignKey(to='Author')
      info = models.CharField(max_length=32)

    Ajax

    前后端传输数据编码格式contentType
    urlencoded
    对应的数据格式:name=jason&password=666
    后端获取数据:request.POST
    ps:django会将urlencoded编码的数据解析自动放到request.POST
    formdata
    form表单传输文件的编码格式
    后端获取文件格式数据:request.FILES
    后端获取普通键值对数据:request.POST
    application/json
    ajax发送json格式数据
    需要注意的点
    编码与数据格式要一致

    前端朝后端发请求的方式
    浏览器窗口手动输入网址       get请求
    a标签的href属性          get请求
    form表单                                get/post请求(默认是get请求)
    ajax              get/post请求

    ajax特点:
    异步提交
    局部刷新

    ajax基本语法
    提交的地址(url)
    提交的方式(type)
    提交的数据(data)
    回调函数(success)
    $('#d1').click(function () {
    $.ajax({
    // 提交的地址
    url:'/index/',
    // 提交的方式
    type:'post',
    // 提交的数据
    data:{'name':'jason','password':'123'},
    // 回调函数
    success:function (data) { // data接收的就是异步提交返回的结果
    alert(data)
    }
    })
    })

    ajax默认传输数据的编码格式也是urlencoded

    因此ajax传输json格式数据要注意

    $('#d1').click(function () {
    $.ajax({
    url:'', // url参数可以不写,默认就是当前页面打开的地址
    type:'post',
    contentType:'application/json',
    data:JSON.stringify({'name':'jason','hobby':'study'}),
    success:function (data) {
    {#alert(data)#}
    {#$('#i3').val(data)#}
    }
    })
    });

    ajax传输文件
    $('#d1').click(function () {
    let formdata = new FormData();
    // FormData对象不仅仅可以传文件还可以传普通的键值对
    formdata.append('name','jason');
    // 获取input框存放的文件
    //$('#i1')[0].files[0]
    formdata.append('myfile',$('#i1')[0].files[0]);
    $.ajax({
    url:'',
    type:'post',
    data:formdata,
    // ajax发送文件需要修改两个固定的参数
    processData:false, // 告诉浏览器不要处理我的数据
    contentType:false, // 不要用任何的编码,就用我formdata自带的编码格式,django能够自动识别改formdata对象
    // 回调函数
    success:function (data) {
    alert(data)
    }
    })
    });

    批量插入数据
    l = []
    for i in range(10000):
    l.append(models.Book2(name='第%s本书'%i))
    models.Book2.objects.bulk_create(l) # 批量插入数据

  • 相关阅读:
    自动跳转至首页(Java Script)
    简单的轮播图(Java Script)
    蓝桥杯 2016年 第七届 四平方和(JAVA)
    蓝桥杯 2016年 第七届 剪邮票(JAVA)
    蓝桥杯 2015年 第六届 生命之树(JAVA)
    蓝桥杯 2015年 第六届 垒骰子(JAVA)
    numpy笔记
    opencv安装和运行
    vs code环境配置注意点
    numpy中matrix使用方法
  • 原文地址:https://www.cnblogs.com/zhangdajin/p/11030948.html
Copyright © 2011-2022 走看看