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


推荐阅读
  • 本文探讨了如何在Classic ASP中实现与PHP的hash_hmac('SHA256', $message, pack('H*', $secret))函数等效的哈希生成方法。通过分析不同实现方式及其产生的差异,提供了一种使用Microsoft .NET Framework的解决方案。 ... [详细]
  • springMVC JRS303验证 ... [详细]
  • 在PHP后端开发中遇到一个难题:通过第三方类文件发送短信功能返回的JSON字符串无法解析。本文将探讨可能的原因并提供解决方案。 ... [详细]
  • 深入解析Spring启动过程
    本文详细介绍了Spring框架的启动流程,帮助开发者理解其内部机制。通过具体示例和代码片段,解释了Bean定义、工厂类、读取器以及条件评估等关键概念,使读者能够更全面地掌握Spring的初始化过程。 ... [详细]
  • 在尝试使用C# Windows Forms客户端通过SignalR连接到ASP.NET服务器时,遇到了内部服务器错误(500)。本文将详细探讨问题的原因及解决方案。 ... [详细]
  • Python + Pytest 接口自动化测试中 Token 关联登录的实现方法
    本文将深入探讨 Python 和 Pytest 在接口自动化测试中如何实现 Token 关联登录,内容详尽、逻辑清晰,旨在帮助读者掌握这一关键技能。 ... [详细]
  • ssm框架整合及工程分层1.先创建一个新的project1.1配置pom.xml ... [详细]
  • Spring Boot 中静态资源映射详解
    本文深入探讨了 Spring Boot 如何简化 Web 应用中的静态资源管理,包括默认的静态资源映射规则、WebJars 的使用以及静态首页的处理方法。通过本文,您将了解如何高效地管理和引用静态资源。 ... [详细]
  • 本文探讨了如何利用HTML5和JavaScript在浏览器中进行本地文件的读取和写入操作,并介绍了获取本地文件路径的方法。HTML5提供了一系列API,使得这些操作变得更加简便和安全。 ... [详细]
  • 本文详细解析了 offset、client 和 page 坐标系统的不同之处。offset 是相对于当前元素的边界框的距离,与滚动条无关;client 是相对于可视区域(viewport)的距离,也与滚动条无关;page 则是相对于整个文档的距离,受滚动条位置影响。 ... [详细]
  • 深入探讨Web页面中的锚点交互设计
    本文旨在分享Web前端开发中关于网页锚点效果的实现与优化技巧。随着Web技术的发展,越来越多的企业开始重视前端开发的质量和用户体验,而锚点功能作为提升用户浏览体验的重要手段之一,值得深入研究。 ... [详细]
  • 近期我们开发了一款包含天气预报功能的万年历应用,为了满足这一需求,团队花费数日时间精心打造并测试了一个稳定可靠的天气API接口,现正式对外开放。 ... [详细]
  • Python3 中使用 lxml 模块解析 XPath 数据详解
    XPath 是一种用于在 XML 文档中查找信息的路径语言,同样适用于 HTML 文件的搜索。本文将详细介绍如何利用 Python 的 lxml 模块通过 XPath 技术高效地解析和抓取网页数据。 ... [详细]
  • 本文将详细介绍通过CAS(Central Authentication Service)实现单点登录的原理和步骤。CAS由耶鲁大学开发,旨在为多应用系统提供统一的身份认证服务。文中不仅涵盖了CAS的基本架构,还提供了具体的配置实例,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 本文介绍了一种根据目标检测结果,从原始XML文件中提取并分析特定类别的方法。通过解析XML文件,筛选出特定类别的图像和标注信息,并保存到新的文件夹中,以便进一步分析和处理。 ... [详细]
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社区 版权所有