50、django工程(ajax)
50.1、ajax介绍:
1、ajax是在不跳转当前url地址的情况偷偷的往后台发送数据做增删改数据的操作,如果成功返回结果刷新当前页面,失败则提醒,
使用 id 或 name 属性。
2、模态对话框中的数据已经随页面的加载而加载。模态对话框(对话框添加,删除,修改)适合使用ajax向后台传送数据,form表单
提交数据是url跳转的方式,使用name属性。
3、ajax data 的 value 值只支持字符串、数字、数组,不支持字典,前端传过来的数据都可看作字符串。
4、ajax语法格式:
(1)前提:ajax的使用需要下载并引入jQuery。
(2)格式:
$.ajax({
url: '/add_classes.html/',
// 后台地址
type: 'POST',
// 发送数据的方式 post、get
data: {'username':'root','password': '123'},
// 向后台发送的key-value的数据形式,value支持字符串、数字、数组、不支持字典。
success:function(arg){
// 回调函数,arg是服务端返回的数据,返回的是字符串。
window.location.reload();
// 刷新界面
},
error:function(){
# 由于网络错误或url地址错误而触发的回调函数。
}
});
50.2、ajax 其它应用方式:
1、Python序列化:
(1)字符串 = json.dumps(对象):
对象 -> 字符串
(2)对象 = json.loads(字符串):
字符串 -> 对象
2、JavaScript:
(1)字符串 = JSON.stringify(对象):
对象 -> 字符串
(2)对象 = JSON.parse(字符串):
字符串 -> 对象
(3)应用场景(数据传输时):
发送:字符串
接收:字符串 -> 对象
(4)用法:
1)发送数据时 data 中的 value 只是字符串或数字:
$.ajax({
url: 'http//www.baidu.com',
type: 'GET',
data: {'k1':'v1'},
success:function(arg){
// arg是字符串类型
// var obj = JSON.parse(arg)
// 将arg转化为对象
}
});
2)发送数据时 data 中的 value 是数组(traditional:true,):
$.ajax({
url: 'http//www.baidu.com',
type: 'GET',
data: {'k1':[1,2,3,4]},
traditional:true,
success:function(arg){
// arg是字符串类型
// var obj = JSON.parse(arg)
// 将arg转化为对象
}
});
3)发送数据时 data 中的 value 是字典:
$.ajax({
url: 'http//www.baidu.com',
type: 'GET',
data: {'k1': JSON.stringify({})},
success:function(arg){
// arg是字符串类型
// var obj = JSON.parse(arg)
// 将arg转化为对象
}
});
4)dataType: 'JSON',:
$.ajax({
url: 'http//www.baidu.com',
type: 'GET',
data: {'k1':'v1'},
dataType: 'JSON',
// 将arg直接转为对象
success:function(arg){
// arg是对象
}
});
3、事件委托:
$('要绑定标签的上级标签').on('click','要绑定的标签',function(){})
$('要绑定标签的上级标签').delegate('要绑定的标签','click',function(){})
50.3、小结:
1、使用新 URL 方式和对话框方式的区别:
(1)新 URL 方式:
1)独立的页面
2)数据量大或条目多
(2)对话框方式:
1)数据量小或条目少
2)增加,编辑
3)Ajax:考虑,当前页,td 中自定义属性
4)删除:对话框
2、示例:
(1)前端(.html):
<script src="/static/js/jquery-3.1.1.js"></script>
<script src="/static/plugins/bootstrap/js/bootstrap.js"></script>
<script>
/*
javascript功能集合
*/
$(function () {
bindDel();
bindDelConfirm();
});
/*
绑定删除按钮点击事件
*/
function bindDel() {
$('#tb').on('click','.del-row',function () {
$('#delModal').modal('show');
// 回去当前行的ID
var rowId = $(this).parent().parent().attr('nid');
$('#delNid').val(rowId);
});
}
/*
绑定删除提交事件
*/
function bindDelConfirm() {
$('#delConfirm').click(function () {
var rowId = $('#delNid').val();
console.log(rowId);
$.ajax({
url: '/del_student/',
type: 'GET',
data: {'nid': rowId},
success:function (arg) {
var dict = JSON.parse(arg);
if(dict.status){
$('tr[nid="'+ rowId+'"]').remove();
}
$('#delModal').modal('hide');
}
});
});
}
</script>
(2)后端(views.py):
from django.shortcuts import render
from django.shortcuts import HttpResponse
from app01 import models
import json
def del_student(request):
ret = {'status': True}
try:
nid = request.GET.get('nid')
models.Student.objects.filter(id=nid).delete()
except Exception as e:
ret['status'] = False
return HttpResponse(json.dumps(ret))
50.4、补充:
1、radio:是checked="checked";ajax:$('#eidtModal :radio[value="1"]').prop('checked',true);。
2、selected:是selected="selected";ajax:var values = $('#sel').val();。
3、zip:
4、JavaScript 字符串和对象之间的转换:
5、http响应:
6、FBV和SBV:
(1)
(2)
(3)
7、遍历表单:
var data = $('#fmForm表单的ID').serialize();
$.ajax({
data: $('#fm').serialize()
})
50、django工程(ajax)的更多相关文章
- Django工程读取mongodb并使用分页器
pycharm开发django工程(二) 项目需求: 1. 从mongodb中读取数据,并显示到网页中 2. 在网页显示的每一页加入分页符 首先使用pycharm的企业版新建一个django的虚拟工程 ...
- Django工程的建立以及小网站的编写
这篇博文会详细的介绍如何创建django工程,介绍我如何做了第一个网站.本文基于windows7安装了python2.7.12,Django1.8.18(LTS)版.采用的IDE为pycharm.建议 ...
- Django使用AJAX调用自己写的API接口
Django使用AJAX调用自己写的API接口 *** 具体代码和数据已上传到github https://github.com/PythonerKK/eleme-api-by-django-rest ...
- python Django之Ajax
python Django之Ajax AJAX,Asynchronous JavaScript and XML (异步的JavaScript和XML),一种创建交互式网页应用的网页开发技术方案. 异步 ...
- django 接受 ajax 传来的数组对象
django 接受 ajax 传来的数组对象 发送:ajax 通过 POST 方式传来一个数组 接收:django 接受方式 array = request.POST.getlist(‘key[]’) ...
- python 全栈开发,Day75(Django与Ajax,文件上传,ajax发送json数据,基于Ajax的文件上传,SweetAlert插件)
昨日内容回顾 基于对象的跨表查询 正向查询:关联属性在A表中,所以A对象找关联B表数据,正向查询 反向查询:关联属性在A表中,所以B对象找A对象,反向查询 一对多: 按字段:xx book ----- ...
- Django工程搭建
-----环境安装 1.创建虚拟环境 mkvirtualenv django_py3_1.11 -p python3 2.安装django pip install django==1.11.11 ...
- python web框架 django 工程 创建 目录介绍
# 创建Django工程django-admin startproject [工程名称] 默认创建django 项目都会自带这些东西 django setting 配置文件 django可以配置缓存 ...
- django学习笔记【001】django版本的确定&创建一个django工程
2.3 查看当前的django版本 python3. -m django --version 2.3.1 创建一个django工程 django-admin startproject mysite 在 ...
随机推荐
- [Java] HOW2J(Java初级)
变量 基本类型:整型(byte.short.int.long).字符型(char).浮点型(float.double).布尔型(boolean) 给基本类型赋值的方式叫字面值 字符的字面值放在单引号中 ...
- 035.Python正则表达式
正则表达式 一 介绍 拼正则表达式是什么? 它是约束字符串匹配某种形式的规则 正则表达式有什么用? 检测某个字符串是否符合规则比如:判断手机号,身份证号是否合法 提取网页字符串中想要的数据.比如:爬虫 ...
- 回归(regression)与分类(classification)的区别
术语监督学习,意指给出一个算法,需要部分数据集已经有正确的答案. " 分类和回归的区别在于输出变量的类型. 定量输出称为回归,或者说是连续变量预测:定性输出称为分类,或者说是离散变量预测. ...
- DS1302应用电路
http://www.diangon.com/wenku/rd/danpianji/201501/00017904.html
- BUCK BOOST学习总结
首先对于我这种电源方面的小白来说 关于电源用的最多的就是线性稳压了 开关类的如 TI 的TPS系列 我是只知道应用电路而不知道具体原理的 但是长此以往也不是个办法 于是今天就带打家详细的来讲一下 ...
- 国内镜像源 sources
Ubuntu18.04源 cat > /etc/apt/sources.list <<eof # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释 deb ...
- Sqlflow 之隐私政策(Privacy plolicy)介绍
在大数据技术流行的今天,SQLFlow 可以通过分析各种数据库对象的定义给开发和管理者带来很大的助力.能够让您在大数据时代应对自如,如虎添翼. 在之前的文章中我们已经详细介绍过SQLFlow是什么.能 ...
- 2021.5.22 noip模拟1
这场考试考得很烂 连暴力都没打好 只拿了25分,,,,,,,,好好总结 T1序列 A. 序列 题目描述 HZ每周一都要举行升旗仪式,国旗班会站成一整列整齐的向前行进. 郭神作为摄像师想要选取其中一段照 ...
- Django(49)drf解析模块源码分析
前言 上一篇分析了请求模块的源码,如下: def initialize_request(self, request, *args, **kwargs): """ Retu ...
- JVM-栈帧之局部变量表
1.栈帧的内部结构 每个栈帧中存储着: 局部变量表(Local Variables) 操作数栈(Operand Stack)(或表达式栈) 动态链接(Dynamic Linking)(或指向运行时常量 ...