热门标签 | 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;图书管理系统—多表操作版-后期优化部分


推荐阅读
  • 探索JavaScript倒计时功能的三种高效实现方法及代码示例 ... [详细]
  • Jedis接口分类详解与应用指南
    本文详细解析了Jedis接口的分类及其应用指南,重点介绍了字符串数据类型(String)的接口功能。作为Redis中最基本的数据存储形式,字符串类型支持多种操作,如设置、获取和更新键值对等,适用于广泛的应用场景。 ... [详细]
  • 本文提供了 RabbitMQ 3.7 的快速上手指南,详细介绍了环境搭建、生产者和消费者的配置与使用。通过官方教程的指引,读者可以轻松完成初步测试和实践,快速掌握 RabbitMQ 的核心功能和基本操作。 ... [详细]
  • 深入解析Wget CVE-2016-4971漏洞的利用方法与安全防范措施
    ### 摘要Wget 是一个广泛使用的命令行工具,用于从 Web 服务器下载文件。CVE-2016-4971 漏洞涉及 Wget 在处理特定 HTTP 响应头时的缺陷,可能导致远程代码执行。本文详细分析了该漏洞的成因、利用方法以及相应的安全防范措施,包括更新 Wget 版本、配置防火墙规则和使用安全的 HTTP 头。通过这些措施,可以有效防止潜在的安全威胁。 ... [详细]
  • 可转债数据智能抓取与分析平台优化
    本项目旨在优化可转债数据的智能抓取与分析平台。通过爬取集思录上的可转债信息(排除已发布赎回的债券),并结合安道全教授提出的三条安全线投资策略,新增了建仓线、加仓线和重仓线,以提供更精准的投资建议。 ... [详细]
  • 深入解析Java中HashCode的功能与应用
    本文深入探讨了Java中HashCode的功能与应用。在Java中,HashCode主要用于提高哈希表(如HashMap、HashSet)的性能,通过快速定位对象存储位置,减少碰撞概率。文章详细解析了HashCode的生成机制及其在集合框架中的作用,帮助开发者更好地理解和优化代码。此外,还介绍了如何自定义HashCode方法以满足特定需求,并讨论了常见的实现误区和最佳实践。 ... [详细]
  • JVM参数设置与命令行工具详解
    JVM参数配置与命令行工具的深入解析旨在优化系统性能,通过合理设置JVM参数,确保在高吞吐量的前提下,有效减少垃圾回收(GC)的频率,进而降低系统停顿时间,提升服务的稳定性和响应速度。此外,本文还将详细介绍常用的JVM命令行工具,帮助开发者更好地监控和调优JVM运行状态。 ... [详细]
  • Django框架下的对象关系映射(ORM)详解
    在Django框架中,对象关系映射(ORM)技术是解决面向对象编程与关系型数据库之间不兼容问题的关键工具。通过将数据库表结构映射到Python类,ORM使得开发者能够以面向对象的方式操作数据库,从而简化了数据访问和管理的复杂性。这种技术不仅提高了代码的可读性和可维护性,还增强了应用程序的灵活性和扩展性。 ... [详细]
  • 优化Node.js项目:有效管理和清理依赖项
    在Node.js项目中,有效管理和清理依赖项是提升性能和安全性的重要步骤。为了确保项目中仅保留必要的库,应定期检查并移除`node_modules`目录下不再使用的包。同时,所有必需的依赖项都应在`package.json`文件中明确列出,以保证项目的可维护性和可复现性。此外,利用如`npm prune`等工具可以帮助自动化这一过程,进一步提高效率。 ... [详细]
  • HTTP协议作为互联网通信的基础,其重要性不言而喻。相比JDK自带的URLConnection,HttpClient不仅提升了易用性和灵活性,还在性能、稳定性和安全性方面进行了显著优化。本文将深入解析HttpClient的使用方法与技巧,帮助开发者更好地掌握这一强大的工具。 ... [详细]
  • voc生成xml 代码
    目录 lxmlwindows安装 读取示例 可视化 生成示例 上面是代码,下面有调用示例 api调用代码,其实只有几行:这个生成代码也很简 ... [详细]
  • PHP连接MySQL的三种方法及预处理语句防止SQL注入的技术详解
    PHP连接MySQL的三种方法及预处理语句防止SQL注入的技术详解 ... [详细]
  • 深入解读代码页与字符集的概念及其实际应用
    许多开发者可能未曾留意到这一问题,但如果您的网站频繁遭遇不明原因的乱码现象,深入了解代码页与字符集的概念及其实际应用将大有裨益。代码页(Codepage),即内码表,是计算机系统中用于映射字符与其编码值的一种机制,不同的代码页支持不同的字符集,正确选择和配置代码页对于确保文本数据的准确显示至关重要。在多语言环境下,合理运用字符集和代码页能够有效避免字符编码冲突,提升用户体验。 ... [详细]
  • 使用 XlsxWriter 模块在 Python 中实现 Excel 单元格内多种格式文本的高效写入
    XlsxWriter 是一个强大的 Python 库,专门用于生成 `.xlsx` 格式的 Excel 文件。该模块不仅支持基本的数据写入,还提供了丰富的格式化选项,能够实现单元格内多种文本样式的高效处理。无论是字体、颜色、对齐方式还是边框,XlsxWriter 都能轻松应对,满足用户在 Excel 视图中的各种需求。 ... [详细]
  • Go语言中Goroutine与通道机制及其异常处理深入解析
    在Go语言中,Goroutine可视为一种轻量级的并发执行单元,其资源消耗远低于传统线程,初始栈大小仅为2KB,而普通线程则通常需要几MB。此外,Goroutine的调度由Go运行时自动管理,能够高效地支持成千上万个并发任务。本文深入探讨了Goroutine的工作原理及其与通道(channel)的配合使用,特别是在异常处理方面的最佳实践,为开发者提供了一套完整的解决方案,以确保程序的稳定性和可靠性。 ... [详细]
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社区 版权所有