through_fields=(book
全自动(较为常用)
class Book(models.Model): title = models.CharField(max_length=64) authors = models.ManyToManyField(to='Author') class Author(models.Model): name = models.CharField(max_length=64) """ 长处:第三张表自动创建,不需要本身创建 不敷:第三张表无法扩展特别的字段 """纯手动(了解)
class Book(models.Model): title = models.CharField(max_length=64) authors = models.ManyToManyField(to='Author') class Author(models.Model): name = models.CharField(max_length=64) class BookToAuthor(models.Model): book = models.ForeignKey(to='Book') author = models.ForeigKey(to='Author') create_time = models.DateField() """ 长处:第三张表可以扩展特别的字段 不敷:orm盘问的时候会带来未便,没有正反向盘问 """半自动(保举使用)
class Book(models.Model): title = models.CharField(max_length=64) authors = models.ManyToManyField(to='Author', through='BookToAuthor', through_fields=('book', 'author')) """ 这里需要本身手动添加一个字段through指定一个外键字段表,声明orm我们已经创建了一张外键字段表了,不需要再帮我们创建,表中有可能有多个外键字段,所以需要用through_fields来声明你是需要通过表中的哪两个字段来记录书与作者的对应关系,挨次:这两个对应关系的字段,写在谁里面,谁就是第一位 """ class Author(models.Model): name = models.CharField(max_length=64) class BookToAuthor(models.Model): book = models.ForeignKey(to='Book') author = models.ForeigKey(to='Author') create_time = models.DateField() """ 长处:第三张表可以扩展特别的字段,还可以操作orm正反向盘问 不敷:无法操作第三张表的四个要领,add, set, remove, clear 虽然无法使用,但是依然可以本身直接操纵第三张表 """ Ajax简介AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步的Javascript和XML”。即使用Javascript语言与处事器进行异步交互,传输的数据为XML(固然,传输的数据不但是XML)。
异步提交
同步:客户端发出一个请求后,需要期待处事器响应结束后,才华发出第二个请求,好比进入梗阻状态
异步:客户端发出一个请求后,无需期待处事器响应结束,就可以发出第二个请求。长短梗阻状态,任务的功效必定是需要的,通过异步回调机制 callback()
AJAX 最大的长处是在不从头加载整个页面的情况下,可以与处事器交换数据并更新部分网页内容。(这一特点给用户的感应熏染是在不知不觉中完成请求和响应过程)
局部刷新
整个过程中页面没有刷新,只是刷新页面中的局部位置而已!
当请求发出后,浏览器还可以进行其他操纵,无需期待处事器的响应!
AJAX 不是新的编程语言,而是一种使用现有标准的新要领(基于js写的一个成果模块),由于原生js书写的Ajax较为繁琐,所以我们可以直接使用jQuery封装好的Ajax模块操纵
AJAX的长处AJAX使用JavaScript技术向处事器发送异步请求;
AJAX请求无须刷新整个页面;
因为处事器响应内容不再是整个页面,而是页面中的部分内容,所以AJAX性能高;
两个关键点:1.局部刷新,2.异步请求
Ajax根基语法布局 $.ajax({ //朝哪个后端提交数据 url:'', // 1.控制数据的提交路径有三种写法,跟form表单中的action属性一致 type:'post', // 2.指定当前请求方法 data:{'i1':$('#i1').val(),'i2':$('#i2').val()}, // 3.提交的数据 // 4.ajax是异步提交,所以需要给一个回调函数来措置惩罚惩罚返回的功效 success:function (data) { //date就是异步提交的返回功效 $('#i3').val(data) } })操练:
页面上有三个input框 一个按钮,,用户在前两个框中输入数字 点击按钮保证页面不刷新的情况下将数据发到后端做计算将计算好的功效再发给前端展示到第三个input框中html:
<body> <input type="text" id="i1"> + <input type="text" id="i2"> = <input type="text" id="i3"> <button id="d1">提交</button> <script> $('#d1').click(function () { // 获取两个框里的内容 // ajax根基语法 $.ajax({ //朝哪个后端提交数据 url:'', // 1.控制数据的提交路径有三种写法,跟form表单中的action属性一致 type:'post', // 2.指定当前请求方法 data:{'i1':$('#i1').val(),'i2':$('#i2').val()}, // 3.提交的数据 // 4.ajax是异步提交,所以需要给一个回调函数来措置惩罚惩罚返回的功效 success:function (data) { //date就是异步提交的返回功效 $('#i3').val(data) } }) }) </script> </body>温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/31485.html