什么是Ajax:

通过js语言跟后台进行交互的一个东西
-特点:异步,局部刷新

ajax往后台提交数据
$.ajax({
url:'请求的地址',
type:'get/post',
data:{key:value,key2:value2},
success:function(data){
alert(data)
}
})

1 后台返回json格式
2 问?返回render,返回redirect?

基于ajax写一个登陆功能,一旦登陆成功,跳转到百度,登陆失败,在页面显示用户名或密码

初识ajax

<h2>点我发数据</h2>
<button id="btn">点我发数据</button>
<span id="sp"></span>
<p>
<button id="btn2">diandiandd</button>
</p>
('#btn').click(function () {
$.ajax({
'url': '/TEXT/',
'type': 'get',
success: function (data) {
console.log(data)
$('#sp').text(data) }
})
})
$('#btn2').click(function () {
alert(2323232)
})
# ajax初识
def ajax(request):
if request.method == 'GET':
return render(request, 'ajax.html') def text(request):
if request.method == 'GET':
import time
time.sleep(5)
return HttpResponse('HELLO WORLD')

ajax计算

<h2>ajax计算</h2>
<input type="text" id="first">+<input type="text" id="second">=<input type="text" id="sum">
<button id="btn3">calculate</button>
def sum1(request):
print(request.body)
print(request.GET)
first = request.POST.get('first')
second = request.POST.get('second')
ret = int(first) + int(second)
return HttpResponse(ret)
$('#btn3').click(function () {
{# var first=('#first').value()#}
{# var second=('#second').value()#}
{# var sum=first+second#}
$.ajax({
url: '/sum/?aa=1313',
type: 'post',
data: {first: $('#first').val(), second: $('#second').val()},
success: function (data) {
$('#sum').val(data)
}
})
})

装饰器

# 装饰器
import json
def json_format(func):
def inner(request, *args, **kwargs):
# 是为了防止报错,主要是处理urlencode这种编码,这种编码应该不处理
try:
# name=lqz&pwd=123
request.POST = json.loads(request.body)
except Exception as e:
print(e)
res = func(request, *args, **kwargs)
return res
return inner

ajax登录

<h2>基于ajax登录</h2>
<p>user <input type="text" id="user"></p>
<p>pwd <input type="text" id="pwd"></p>
<button id="submit">submit</button>
# ajax登录
@json_format
def loginjson(request):
dic = {'status': 100, 'msg': None}
if request.method == 'GET':
return render(request, 'ajax.html')
if request.is_ajax():
print(request.POST)
print(request.GET)
print(request.body)
# loads可以直接传二进制
# request_dic=json.loads(request.body)
# request.POST=request_dic
# print(type(request_dic))
user = request.POST.get('user')
pwd = request.POST.get('pwd')
print(user, pwd)
return HttpResponse('ok')
$('#submit').click(function () {
postdata = {user: $("#user").val(), pwd: $("#pwd").val()}
$.ajax({
url: '/loginjson/',
type: 'post',
contentType: 'application/json',
data: JSON.stringify(postdata),
success: function (data) {
console.log(data)
alert('ok')
{# data = JSON.parse(data)#}
{# if (data.status == 100) {#}
{# alert(data.msg)#}
{# } else {#}
{# $('#error').text(data.msg)#}
}
})
})

总结:

总结:
1 后端如果返回JsonResponse,前端的ajax内部会自动将json格式字符串转换成字典
2 后端如果返回HttpResponse,前端的ajax内部不会给你自动转换,拿到的data是字符串类型,需要手动JSON.parse(data)来转成字典

3 字符串转字典:JSON.parse(data)
字典转字符串:aa=JSON.stringify(字典对象)
4 如果前端传的格式是json格式,django不会处理body中的内容,需要自己处理
只有前端传的格式是urlencoded,form-data格式,django才会给我处理

urlencoded: name=lqz&pwd=123

Python-Django-Ajax的更多相关文章

  1. Python - Django - AJAX 实现 POST 请求

    index.html: <input type="text" id="i1">+ <input type="text" i ...

  2. Python Django Ajax 传递列表数据

    function getTableContent(node) { event.preventDefault(); var tr = node.parentNode.parentNode; var id ...

  3. python Django Ajax基础

    升级版: ajax 创建多对多以及增加示例: views中的接收

  4. python Django之Ajax

    python Django之Ajax AJAX,Asynchronous JavaScript and XML (异步的JavaScript和XML),一种创建交互式网页应用的网页开发技术方案. 异步 ...

  5. python学习-- Django Ajax CSRF 认证

    使用 jQuery 的 ajax 或者 post 之前 加入这个 js 代码:http://www.ziqiangxuetang.com/media/django/csrf.js /*======== ...

  6. python django 多级业务树形结构规划及页面渲染

    概述: 在项目中,父级到子级结构并不少见,如果仅仅的两层树形结构,我们可以使用数据库的外键设计轻松做到,子级业务表设计一字段外键到父级业务表,这样子到父.父到子的查询都非常简单. 但是往往父子结构会有 ...

  7. Django ajax MYSQL Highcharts<1>

    Another small project with django/Ajax/Mysql/Highcharts. 看下效果图  - delivery dashboard .嘿嘿 是不是还蛮好看的. 废 ...

  8. Python Django CMDB项目实战之-1如何开启一个Django-并设置base页、index页、文章页面

    1.环境 win10 python 2.7.14 django 1.8.2 需要用到的依赖包:MySQLdb(数据库的接口包).PIL/pillow(处理图片的包) 安装命令: pip install ...

  9. python Django知识点总结

    python Django知识点总结 一.Django创建项目: CMD 终端:Django_admin startproject sitename(文件名) 其他常用命令: 其他常用命令: 通过类创 ...

  10. python Django注册页面显示头像

    python Django注册页面显示头像(views) def register(request): ''' 注册 :param request: :return: ''' if request.m ...

随机推荐

  1. openstack第三章:nova

    第三篇nova— 计算服务 一.nova介绍:             Nova 是 OpenStack 最核心的服务,负责维护和管理云环境的计算资源.OpenStack 作为 IaaS 的云操作系统 ...

  2. 一招明白URL和URI的区别

    URL和URI的区别(示例): URL[统一资源定位器]: http://localhost:8080/api/account/queryAccountInfo URI[统一资源定位符]: /api/ ...

  3. python配置文件的加载

    背景: 微信机器人项目用到了mysql数据库配置,阿里云OSS上传文件配置:现在需要将这些配置参数统一写到一个配置文件中统一管理,而不是分散的写在代码中 1. 使用.ini文件作为配置文件 例如: s ...

  4. LODOP不同打印机出现偏移问题

    方法简单描述:1.精确套打,设置以纸张边缘为基点,可避免不同可打区域不同带了的影响.2.不同客户端打印机位置差异,可通过打印维护调整,结果在客户端本地.或调整打印机初始位置(本人使用的金税盘的开票软件 ...

  5. Insert Into select 与 Select Into 哪个更快?

    在平常数据库操作的时候,我们有时候会遇到表之间数据复制的情况,可能会用到INSERT INTO SELECT 或者 SELECT INTO : 那么二者语法上有什么区别?性能上又如何呢? 围绕着这两个 ...

  6. P4783 【模板】矩阵求逆

    原题链接 https://www.luogu.org/problemnew/show/P4783 一道模板题,更重要的省选难度..... 题目要求的是一个n*n的逆矩阵,还要对大数取膜. 普通高中生: ...

  7. 【XSY3139】预言家 数位DP NFA

    题目描述 有一个定义在 \(\{0,1,2,3,4,5,6,7,8,9\}\) 上的合规表达式,包含三种基本的操作: 结合:\(E_1E_2\) 分配:\((E_1|E_2|\ldots|E_n),n ...

  8. MT【315】勾股数

    (高考压轴题)证明以下命题:(1)对任意正整数$a$都存在正整数$b,c(b<c)$,使得$a^2,b^2,c^2$成等差数列.(2)存在无穷多个互不相似的三角形$\Delta_n$,其边长$a ...

  9. BZOJ3784树上的路径

    题目描述 给定一个N个结点的树,结点用正整数1..N编号.每条边有一个正整数权值.用d(a,b)表示从结点a到结点b路边上经过边的权值.其中要求a<b.将这n*(n-1)/2个距离从大到小排序, ...

  10. php支持大文件上传

    打开php.ini找到 upload_max_filesize . memory_limit . post_max_size 这三个参数! upload_max_filesize = 2G 是上传最大 ...