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. notepad正则删除关键词所在行

    转自:http://www.gangzi.net/article/615.htm 查找:^.*大师兄.*$替换为:(空) 如果不留空行:查找:^.*大师兄.*\r?\n替换为:(空)注意:Notepa ...

  2. Cannot find libcrypto in Ubuntu

    https://stackoverflow.com/questions/13811889/cannot-find-libcrypto-in-ubuntu sudo apt-get install li ...

  3. Makefile 简要辅导 【转载】

    A Simple Makefile Tutorial Makefiles are a simple way to organize code compilation. This tutorial do ...

  4. 负载均衡服务之HAProxy访问控制ACL

    前文我们聊到了haproxy的错误页的配置,自定义日志的配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12797913.html:今天我们主要来看看hap ...

  5. 标准库shelve

    shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...

  6. 如何在Vue项目中优雅的使用swiper插件

    个人网站 https://iiter.cn 程序员导航站 开业啦,欢迎各位观众姥爷赏脸参观,如有意见或建议希望能够不吝赐教! 开始之前,请先确保有一个基于webpack模板的项目(vue-cli脚手架 ...

  7. Linux下进程的创建(system(); fork(); exec*())

    0. system(); system()函数通过调用shell程序来执行所指向的命令(效率低),相当于先fork(),再execve(): 特点:原进程和子进程各自运行,且原进程需要等子进程运行完后 ...

  8. 图论--2-SAT--详解

    问题描述: 现有一个由N个布尔值组成的序列A,给出一些限制关系,比如A[x]AND A[y]=0.A[x] OR A[y] OR A[z]=1等,要确定A[0..N-1]的值,使得其满足所有限制关系. ...

  9. CodeForces - 262C 贪心

    Maxim always goes to the supermarket on Sundays. Today the supermarket has a special offer of discou ...

  10. Spring依赖注入—@Resource注解使用

    1.@Autowired默认按类型装配(这个注解是属业spring的),默认情况下必须要求依赖对象必须存在,如果要允许null 值,可以设置它的required属性为false,如:@Autowire ...