一、Form表单与ajax
1.普通的form表单形式如下,处理POST请求没什么问题
<form action="..." method="POST">
<input type="submit" value="提交" />
</from>
2.如果你是ajax处理form表单的提交功能
<form >
<button type="button" value="提交" />
</from>
一般会把form 标签内部的东西去掉,input改为button, 一定要把type设置为button 也就是 type="button"
,不要再写成 type=“submit”,这样可能导致许多问题
(1)错误提示信息一闪而过
(2)正常处理完POST请求后,附带了GET请求,并导致页面上的url暴露信息
(3)POST请求通过,校验用户也是正确的,但是系统报很多错
二、ajax获取html数据,再次对html数据中的元素绑定事件
1.需求描述:我有一个表格,thead
内容固定,tbody
中的每个td
元素都可以点击变色(每个td都绑定了click事件,都有一个class="bitem"
的属性)。现在通过ajax请求重新从服务器获取表格的tbody
部分,要求新的表格每个框依然可以点击变色。
原始绑定事件:
$('.bitem').click(function () {
// 处理变色事件
})
2.问题:
新的html数据可以被加载并渲染,但是bitem的点击事件不起作用。
3.解决方案:
$(document).on('click', '.bitem', function () {
处理变色事件
}
三、从多对多/一对多关系对象中获取集合
1.需求描述:
现有Book表/Author表/Publish表,关系如下所示:
其中Publish和Book有一对多的关系,Book和Publish有多对多的关系。
2.问题:现在如果只给你authors
和publish
的字符串,你该如何获取对应的全部记录
3.解决方案:
(1)Django 1.11
Book._meta.get_field('authors').rel.to.objects.all()
Book._meta.get_field('publish').rel.to.objects.all()
(1)Django 2.1
Book._meta.get_field('authors').related_model.objects.all()
Book._meta.get_field('publish').related_model.objects.all()
4.应用场景
Django 自定义后台的 过滤器部分,如下图所示