AJAX简介:

AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步的Javascript和XML”。即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML,现在更多使用json数据)。

    AJAX 不是新的编程语言,而是一种使用现有标准的新方法。

    AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。(这一特点给用户的感受是在不知不觉中完成请求和响应过程)

    AJAX 不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。

      a.同步交互:客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求;

      b.异步交互:客户端发出一个请求后,无需等待服务器响应结束,就可以发出第二个请求。

  AJAX除了异步的特点外,还有一个就是:浏览器页面局部刷新;

AJAX请求‘Content-Type'三种类型:

前端js进行http请求和后端代码进行数据传输的消息格式:

&连接的赋值序列:'Content-Type':'application/x-www-form-urlencoded'(默认)

片段数据:'Content-Type':'multipart/form-data'(上传文件使用,同时请求方式为post,django自动识别解析,文件为request.FILES)

json字符串:'Content-Type':'application/json'(请求数据为json字符串时需要指定,django不能自动识别,需要对request.body进行手动解析操作)

AJAX的简单使用:

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script>
<title>login</title>
</head>
<body>
<div>
用户名:<input type="text" name="username" id="username">
密码:<input type="password" name="password" id="password">
<input type="button" id="submit" value="提交">{% csrf_token %}
<span id="status"></span>
</div>
</body>
<script>
//以post方式请求(csrf)
$(function () {
$('#submit').click(function () {
$.ajax({
url: "{% url 'auth' %}",//请求路径
type: 'post', //请求方式
data: { //请求数据(post请求的csrf认证键值对固定)
username: $('#username').val(),
password: $('#password').val(),
csrfmiddlewaretoken: $('input[name=csrfmiddlewaretoken]').val(),
},
success: function (response) {//请求回调函数
if (response == 1) {
location.href = "{% url 'index' %}"
} else {
$('#status').text('账号或密码有误!')
}
}
})
})
}) //以get方式请求
$(function () {
$('#submit').click(function () {
$.ajax({
url:"{% url 'auth' %}",
type:'get',
data:{
username: $('#username').val(),
password: $('#password').val(),
},
success:function (response) {
if(response==1){
location.href="{% url 'index' %}"
}else{
$('#status').text('账号或密码有误!')
}
}
})
})
})
</script> </html>

login.html

urls.py

 urlpatterns = [
url(r'^login/',views.login,name='login'),
url(r'^auth/',views.auth,name='auth'),
url(r'^index/',views.index,name='index'),
]

 views.py

 def login(request):
if request.method == 'GET':
return render(request, 'login.html')
#ajax请求的处理视图函数
def auth(request):
#POST请求
if request.method == 'POST':
name = request.POST.get('username')
psd = request.POST.get('password')
print(name, psd, type(name), type(psd))
if name == "yang" and psd == '':
status = 1
else:
status = 0
return HttpResponse(status)
#GET请求
if request.method == 'GET':
if request.GET.get('username') == 'yang' and request.GET.get('password') == '':
status = 1
else:
status = 0
return HttpResponse(status) def index(request):
return render(request, 'index.html')

views.py

AJAX请求CSRF认证cookie处理:

<script src="{% static 'js/jquery.cookie.js' %}"></script>

<script>

$.ajax({

url: "/cookie_ajax/",

type: "POST",

headers: {"X-CSRFToken": $.cookie('csrftoken')},  // Cookiecsrftoken,并设置到请求头中

  data: {"username": "chao", "password": 123456},

success: function (data) {

console.log(data);

}

})

</script>

Django之AJAX简单使用的更多相关文章

  1. Django与ajax、分页器

    ajax简单数据响应 ajax请求,后台只需要返回信息,所以不会出现render.redirect 模板层: $('.btn').click(function() { $.ajax({ url: '/ ...

  2. python 全栈开发,Day75(Django与Ajax,文件上传,ajax发送json数据,基于Ajax的文件上传,SweetAlert插件)

    昨日内容回顾 基于对象的跨表查询 正向查询:关联属性在A表中,所以A对象找关联B表数据,正向查询 反向查询:关联属性在A表中,所以B对象找A对象,反向查询 一对多: 按字段:xx book ----- ...

  3. Django使用AJAX调用自己写的API接口

    Django使用AJAX调用自己写的API接口 *** 具体代码和数据已上传到github https://github.com/PythonerKK/eleme-api-by-django-rest ...

  4. Django与Ajax,文件上传,ajax发送json数据,基于Ajax的文件上传,SweetAlert插件

    一.Django与Ajax AJAX准备知识:JSON 什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻 ...

  5. 用django创建一个简单的sns

    用django创建一个简单的sns 1.首先创建一个工程newsns django-admin.py startproject newsns 在工程目录下新建一个文件夹templates,在该文件夹下 ...

  6. ajax简单后台交互

    ajax简单后台交互 1,扯淡 单身的生活,大部分时间享受自由,小部分时间忍受寂寞. 生活有时候,其实蛮苦涩,让人难以下咽.那些用岁月积累起来的苦闷,无处宣泄,在自己的脑海里蔓延成一片片荆棘,让你每每 ...

  7. django初探-创建简单的博客系统

    django第一步 1. django安装 pip install django print(django.get_version()) 查看django版本 2. 创建项目 打开cmd,进入指定目录 ...

  8. django初探-创建简单的博客系统(二)

    上篇django初探-创建简单的博客系统(一)已经记录了Django实现博客的发布的整个过程,接下来继续说明博客标题和内容的显示. 显示博客详细 将博客内容保存到数据库还不是发布博客的终极目的,博客一 ...

  9. python Django之Ajax

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

随机推荐

  1. 2019-2020-1 20199326《Linux内核原理与分析》第二周作业

    本周总结:本周的学习内容主要是庖丁解牛Linux的第一章,然后看完书后,又跟着云班课加深学习了一下第一章的内容.第一章主要讲述了linux里的汇编指令的一些指令,比如movl,pushl,popl等等 ...

  2. redis部署与卸载

    1.先到Redis官网(redis.io)下载redis安装包 cd /tmp wget http://download.redis.io/releases/redis-4.0.10.tar.gz 2 ...

  3. HTTP 1.1, 返回值100.

    HTTP 1.1支持只发送header信息(不带任何body信息),如果服务器认为客户端有权限请求服务器,则返回100,否则返回401.客户端如果接受到100,才开始把请求body发送到服务器. 这样 ...

  4. Libra教程之:Libra testnet使用指南

    文章目录 Libra testnet网络 下载和安装Libra 编译Libra client并连接到Testnet网络 创建两个A和B的两个账号 检查libra cli Client是否运行 创建A的 ...

  5. ElementUI表单验证攻略:解决表单项启用和禁用验证的切换,以及动态表单验证的综合性问题

    试想一种比较复杂的业务场景: 表格(el-table)的每一行数据的第一列是勾选框,最后一列是输入框.当某一行的勾选框勾上时,启用该行的输入框,并开启该行输入框的表单验证:取消该行的勾选框,则禁用该行 ...

  6. Ubuntu搭建NTP服务器

    NTP简介 NTP是Network Time Protocol的缩写,又称为网络时间协议.是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提 ...

  7. SQL语句学习(二)

    为一张表添加外键: 这里我们希望再建一张订单的表为t_order,包含order_id,customer_id和price: ) NOT NULL auto_increment PRIMARY KEY ...

  8. Java本地的项目,怎么可以让别人通过外网访问-内网穿透

    2019独角兽企业重金招聘Python工程师标准>>> 一.点击链接 https://natapp.cn/ 注册个免费的账户 NATAPP官网 二.登陆进去以后查看authtoken ...

  9. 震惊,某博主为吸引眼球拿出压箱底SQL总结,如果你没看那就吃亏了!(超级详细的SQL基础,你还不会的话就别学数据库了)

    这里还有数据库相关的优质文章:快戳我,快戳我

  10. JavaSpring中级联查询

    一对一级联查询映射文件PersonMapper.xml代码: <?xml version="1.0" encoding="UTF-8"?> < ...