Django之AJAX简单使用
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')}, // 从Cookie取csrftoken,并设置到请求头中
data: {"username": "chao", "password": 123456},
success: function (data) {
console.log(data);
}
})
</script>
Django之AJAX简单使用的更多相关文章
- Django与ajax、分页器
ajax简单数据响应 ajax请求,后台只需要返回信息,所以不会出现render.redirect 模板层: $('.btn').click(function() { $.ajax({ url: '/ ...
- python 全栈开发,Day75(Django与Ajax,文件上传,ajax发送json数据,基于Ajax的文件上传,SweetAlert插件)
昨日内容回顾 基于对象的跨表查询 正向查询:关联属性在A表中,所以A对象找关联B表数据,正向查询 反向查询:关联属性在A表中,所以B对象找A对象,反向查询 一对多: 按字段:xx book ----- ...
- Django使用AJAX调用自己写的API接口
Django使用AJAX调用自己写的API接口 *** 具体代码和数据已上传到github https://github.com/PythonerKK/eleme-api-by-django-rest ...
- Django与Ajax,文件上传,ajax发送json数据,基于Ajax的文件上传,SweetAlert插件
一.Django与Ajax AJAX准备知识:JSON 什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻 ...
- 用django创建一个简单的sns
用django创建一个简单的sns 1.首先创建一个工程newsns django-admin.py startproject newsns 在工程目录下新建一个文件夹templates,在该文件夹下 ...
- ajax简单后台交互
ajax简单后台交互 1,扯淡 单身的生活,大部分时间享受自由,小部分时间忍受寂寞. 生活有时候,其实蛮苦涩,让人难以下咽.那些用岁月积累起来的苦闷,无处宣泄,在自己的脑海里蔓延成一片片荆棘,让你每每 ...
- django初探-创建简单的博客系统
django第一步 1. django安装 pip install django print(django.get_version()) 查看django版本 2. 创建项目 打开cmd,进入指定目录 ...
- django初探-创建简单的博客系统(二)
上篇django初探-创建简单的博客系统(一)已经记录了Django实现博客的发布的整个过程,接下来继续说明博客标题和内容的显示. 显示博客详细 将博客内容保存到数据库还不是发布博客的终极目的,博客一 ...
- python Django之Ajax
python Django之Ajax AJAX,Asynchronous JavaScript and XML (异步的JavaScript和XML),一种创建交互式网页应用的网页开发技术方案. 异步 ...
随机推荐
- 2019-2020-1 20199310《Linux内核原理与分析》第九周作业
1.问题描述 在前面的文章中,学习了译链接的过程和ELF可执行文件格式,对Linux内核装载和启动一个可执行程序,本次内容围绕对进程调度的时机和进程切换进行,分析进程的调度时机,调度策略和算法,并跟踪 ...
- 疫情之下微软收入猛增15%!远程办公产品Teams日活达7500万
当地时间 2020 年 4 月 29 日,微软公布了截止 2020 年 3 月 31 日的 2020 财年第三季度财报. 这是微软首次在财报中显示新冠疫情的影响——疫情之下,远程办公.远程教育和游戏场 ...
- 自动获取时间html代码
<button type="button" onclick="document.getElementById('demo').innerHTML = Date()& ...
- Redis介绍及字符串操作
一.前言 不同程序之间实现通信的方法? A.通过不同程序之间建立socket,实现通信.实际应用适用于使用broker,如RabbitMQ,ZeroMQ. B.通过Json,Pickle,利用文件的写 ...
- SaltStack数据系统之Grains、Pillar
SaltStack数据系统之Grains.Pillar 1.什么是Grains? Grains是saltstack的组件,用于收集salt-minion在启动时候的信息,又称为静态信息.Grains是 ...
- 图论--2-SAT--POJ 3905 Perfect Election
Perfect Election Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 964 Acce ...
- 网络流 I - Fox And Dinner CodeForces - 510E
Fox Ciel is participating in a party in Prime Kingdom. There are n foxes there (include Fox Ciel). T ...
- EditPlus编辑java代码 常规配置
- mybatis添加信息自动生成主键
一.使用Oracle数据库 举例:添加员工的时候自动生成主键 1.在dao接口中声明方法 2.在mapper中实现该方法 需要先在数据表中创建序列 3.测试 注意:在调用过save方法之后,emp对象 ...
- 【Hadoop离线基础总结】Sqoop数据迁移
目录 Sqoop介绍 概述 版本 Sqoop安装及使用 Sqoop安装 Sqoop数据导入 导入关系表到Hive已有表中 导入关系表到Hive(自动创建Hive表) 将关系表子集导入到HDFS中 sq ...