热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Django框架进阶教程:掌握Ajax请求的基础知识与应用技巧

本教程深入探讨了Django框架中Ajax请求的核心概念与实用技巧,帮助开发者掌握异步数据交互的方法,提升Web应用的响应速度和用户体验。通过实例解析,详细介绍了如何在Django项目中高效实现Ajax请求,涵盖从基础配置到复杂场景的应用。

下面是小凰凰的简介,看下吧!
💗人生态度:珍惜时间,渴望学习,热爱音乐,把握命运,享受生活
💗学习技能:网络 -> 云计算运维 -> python全栈( 当前正在学习中)
💗您的点赞、收藏、关注是对博主创作的最大鼓励,在此谢过!
有相关技能问题可以写在下方评论区,我们一起学习,一起进步。
后期会不断更新python全栈学习笔记,秉着质量博文为原则,写好每一篇博文。


文章目录

    • 一、Ajax简介
        • 1、浏览器向服务器发送请求的形式
        • 2、Ajax引言
        • 3、Ajax两大特点
        • 4、Ajax怎么实现局部刷新呢?
    • 二、Ajax案例
        • 1、get请求
        • 2、post请求
    • 三、json在Ajax简单应用


一、Ajax简介

作用:前端浏览器向后端服务器发送请求的一种技术

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

1、浏览器向服务器发送请求的形式

(1)地址栏输入url 默认get方式
(2)form表单的提交按钮 get或者post
(3) a标签 默认get(4)ajax get或者post

浏览器向服务器发送请求方式远不止get、post,还有delete等其他请求方式,慢慢来,现在暂时先了解post、get!

2、Ajax引言

上面的请求形式中前3个的请求方式时,浏览器接收到回应消息时,会刷新整个页面。那么能不能实现局部刷新呢?ajax就能实现这点。

有人可能会问,什么叫局部刷新?
在这里插入图片描述看上图,我点击注册浏览器整个页面并没有刷新,而是局部刷新了,然后出现了用户名已经被使用字样!

想上面这种请求方式毫无疑问肯定采用了ajax!其实现在博客园这种,用户体验并不好,因为还需要点击注册!我们来看看百度注册页:

在这里插入图片描述输入框失去焦点,马上发送ajax请求!这样用户体验无疑比之前好很多!

3、Ajax两大特点

异步交互----Ajax使用Javascript技术向服务器发送异步请求

浏览器页面局部刷新----Ajax无须刷新整个页面

# 补充:同步交互:客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求;
异步交互:客户端发出一个请求后,无需等待服务器响应结束,就可以发出第二个请求。

4、Ajax怎么实现局部刷新呢?

注意Ajax本身是不能自己实现局部刷新,需要你控制它实现!Ajax是一种异步请求,会有一个异步回调函数,在回调函数中你可以添加DOM节点,删除DOM节点,实现添加、删除页面内容,这样就实现了局部刷新!

二、Ajax案例


1、get请求

实现加法计算!效果如下:
在这里插入图片描述


<html lang&#61;"en">
<head><meta charset&#61;"UTF-8"><title>Ajaxtitle><script src&#61;"/static/js/jquery-3.3.js">script>
head>
<body>
<input type&#61;"text" id&#61;"num1"> &#43; <input id&#61;"num2" type&#61;"text"> &#61; <input id&#61;"ret" type&#61;"text">
<button class&#61;"cal ">计算button>
body>
<script src&#61;"https://cdn.jsdelivr.net/npm/jquery&#64;1.12.4/dist/jquery.min.js">script>
<script>$(&#39;.cal&#39;).click(function () {var num1 &#61; $("#num1").val();var num2 &#61; $("#num2").val();$.ajax({url: &#39;/cal/&#39;,type: &#39;get&#39;,data: { // 这不是字典&#xff0c;是对象类型&#xff0c;特点&#xff0c;键可以不加引号num1: num1,num2: num2},success: function(response) { // 异步回调函数$(&#39;#ret&#39;).val(response)}})})
script>
html>

data是get请求所带的参数&#xff01;后端采用request.GET.get()可以获取参数值&#xff0c;然后进行计算&#xff0c;再返回&#xff0c;再在异步回调函数中渲染计算结果1

# urls.pypath(&#39;&#39;, views.index),path(&#39;cal/&#39;, views.cal),

# views.pydef index(request):return render(request,&#39;index.html&#39;)
def cal(request):num1 &#61; request.GET.get(&#39;num1&#39;)num2 &#61; request.GET.get(&#39;num2&#39;)num3 &#61; float(num1) &#43; float(num2)return HttpResponse(str(num3))

2、post请求

post请求和get请求主要区别时&#xff0c;针对post请求django需要进行csrf验证&#xff0c;因此你的data参数中需要带着csrfmiddlewaretoken&#xff0c;下面我把有改动的代码写下&#xff1a;

# index.html改动{% csrf_token %} # 随便在body标签那个位置添加# 相应位置修改即可&#xff1a;
type: &#39;post&#39;,
data: {num1: num1,num2: num2,csrfmiddlewaretoken: $("[name&#61;&#39;csrfmiddlewaretoken&#39;]").val()
},

# views.py的改动
def cal(request):num1 &#61; request.POST.get(&#39;num1&#39;)num2 &#61; request.POST.get(&#39;num2&#39;)num3 &#61; float(num1) &#43; float(num2)return HttpResponse(str(num3))

三、json在Ajax简单应用

既然称之为简单应用&#xff0c;没错 &#xff0c;下篇博客&#xff0c;我们将会讲解json在Ajax中的主流应用方法&#xff01;

当涉及到python中列表、字典等数据类型的传输时&#xff0c;我们不能直接传输&#xff0c;因为HttpResponse传输的是一个字符串&#xff0c;json其实就是一个字符串&#xff01;还有一个原因就是json可以跨语言&#xff01;因为js中的对象和python中的字典不一样&#xff0c;需要json转&#xff01;

在这里插入图片描述
json字符串是双引号&#xff0c;但是不论是上面json中那种数据类型&#xff0c;最外面都有单引号&#xff08;&#39;&#39;&#xff09;&#xff0c;因此说json就是一个字符串&#xff0c;因此json里面的字符串必须用双引号&#xff0c;避免和单引号混淆&#xff01;

Javascript中的json使用

序列化方法&#xff1a; JSON.stringify() 等同于Python json.dumps()
反序列化方法&#xff1a; JSON.parse() 等同于Python json.loads()

实现案例请见&#xff1a;图书管理系统—多表操作版-后期优化部分


推荐阅读
author-avatar
mobiledu2502891563
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有