Django——Ajax请求

Django——Ajax请求

一、响应 Json 数据

path('str/' , views.str_view),
path('json/' , views.json_view),
path('jsonresponse/' , views.jsonresponse_view),
path('ls/' , views.ls),
from django.shortcuts import render , HttpResponse
from django.http import JsonResponse
import jsondef str_view(request):str = {"name":"阿宸" , "adder":"广州"}str_json = json.dumps(str , ensure_ascii=False)return HttpResponse(str_json)def json_view(request):response = HttpResponse(content_type='application/json ; charset=utf-8')# 将数据写入到响应对象中response.write({"name":"阿宸" , "adder":"广州"})return responsedef jsonresponse_view(request):# isinstance(data, dict)return JsonResponse({"name":"阿宸" , "adder":"广州"},json_dumps_params={'ensure_ascii':False})def ls(request):return JsonResponse(['境界' , '盾山'] , safe=False , json_dumps_params={'ensure_ascii':False})

二、Ajax 请求

Ajax 是一个异步操作,可以在不加载整个页面的前提下,进行局部的更新数据

Ajax 发送请求之后,代码是可以继续往后面执行,直到操作的事件结束。

Django 项目配置静态文件:在项目中创建一个文件夹:static

在配置文件中,配置项目的搜索路径

STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]

发送原生的 Ajax 请求

<body>
<form>{% csrf_token %}<p>用户名:<input type="text" name="username"></p><p>密码:<input type="password" name="password"></p><input type="button" value="登录" id="btn">
</form><script>$('#btn').click(function () {$.ajax({// 响应的 url , 发送请求类型, 携带的数据url:'{% url "ajax" %}',type: 'post',data:{username:$('[name=username]').val(),password:$('[name=password]').val(),// 获取 csrf 跨站点防御的令牌字段值csrfmiddlewaretoken:$('[name=csrfmiddlewaretoken]').val(),},success:function (data) {// data 是后端传递过来的数据console.log(data)}})})
</script>
</body>
def ajax_regirster(request):return render(request , 'ajax_regirster.html')def ajax_response(request):return HttpResponse('Ajax 数据已提交')
path('ajax/' , views.ajax_regirster),
path('ajax_str/' , views.ajax_response , name='ajax')

使用 jquery 发送 Ajax 请求

<body>
<form>{% csrf_token %}<p>用户名:<input type="text" name="username" id="mingzi"></p><span style="color: red" id="error"></span><p>密码:<input type="password" name="password"></p><input type="submit" value="注册">
</form>
<script>$(function () {error_chack_name = false$('#mingzi').blur(function () {// 调用方法// 方法执行的时间 , 当绑定的文本失去焦点的时候执行check_name()})// 检验用户名是否合法 检验用户名是否重复function check_name() {// 获取用户名var username = $('#mingzi').val()if(username.length > 3 && username.length < 15){// 向后端发送 ajax 请求$.post(// 请求 的 url"{% url 'check' %}",// 请求参数{name : username,csrfmiddlewaretoken:'{{ csrf_token }}'},// 调用回调函数 , 接收后端传递过来的数据function (data) {// count 数据if(data.count > 0){$('#error').html('用户名已存在')$('#error').show()error_chack_name = false;} else {error_chack_name = true;$('#error').hide()}})} else {// 用户名长度不合格// 显示错误信息$('#error').html('用户名长度不合格')$('#error').show()error_chack_name = false}}})
</script>
</body>
def jquert_ajax(request):return render(request, 'jquery_ajax.html')def check_name(request):name = request.POST.get('name')users = user.objects.filter(name=name)return JsonResponse({'count':users.count()})
path('ajax2/' , views.jquert_ajax),
path('check_name/' , views.check_name , name='check'),

使用 axios 发送 ajax 请求

<body>
<div id="user"><form>{% csrf_token %}{# @blur 绑定 vue 方法 , v-model  vue 获取文本框的数据#}<p>用户名:<input type="text" name="username" v-model="username" @blur="check_name"></p><span style="color: red" v-show="error_name">[[ error_name_message ]]</span><p>密码:<input type="password" name="password" v-model="password"></p><input type="submit" value="注册"></form>
</div>
<script>// 新建 vue 对象let vm = new Vue({// 通过 ID 选择器获取绑定的标签el:'#user',// 修改 vue 的模板语法delimiters: ['[[',']]'],// 获取表单中的数据data:{// 根据标签绑定 获取v-model 的值username:'',password:'',// 标记错误信息标签 , 默认为 false , 隐藏标签error_name:false,// 定义异常信息error_name_message:''},// 定义绑定的方法methods:{check_name(){let name_long = this.username.length;if(name_long > 3 && name_long < 15){this.error_name = false;} else {// 长度不合格this.error_name = true;// 设置异常信息this.error_name_message = '用户名长度不合格'}if(this.error_name == false){// 检验用户是否重复axios.get(// 请求的url:/ajax_str/?name=acac'/ajax_str/?name='+this.username,// 请求头 , 响应类型{responseType : 'json'})// 请求成功.then(response =>{// 获取请求成功之后 , 后端返回的数据// 数据封装在 response的data 中if(response.data.code > 0){console.log(response.data.code)// 用户名已存在this.error_name = true;this.error_name_message = '用户名已存在'} else {// 用户名不存在this.error_name = false;}})}}}})
</script>
</body>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/773192.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文心一言指令词宝典之职场效率篇

作者&#xff1a;哈哥撩编程&#xff08;视频号、抖音、公众号同名&#xff09; 新星计划全栈领域优秀创作者博客专家全国博客之星第四名超级个体COC上海社区主理人特约讲师谷歌亚马逊演讲嘉宾科技博主极星会首批签约作者 &#x1f3c6; 推荐专栏&#xff1a; &#x1f3c5;…

基于SpringBoot和Vue的车辆管理系统的设计与实现

今天要和大家聊的是一款基于SpringBoot和Vue的车辆管理系统的设计与实现 &#xff01;&#xff01;&#xff01; 有需要的小伙伴可以通过文章末尾名片咨询我哦&#xff01;&#xff01;&#xff01; &#x1f495;&#x1f495;作者&#xff1a;李同学 &#x1f495;&#x1f…

设计模式(3):工厂模式

一.工厂模式 实现了创建者和调用者的分离。 二.分类 简单工厂模式 用来生产同一等级结构中的任意产品。(对于新增产品&#xff0c;需要修改已有代码。用的最多&#xff09; 要点: 简单工厂模式也叫静态工厂模式&#xff0c;就是工厂类一般是使用静态方法&#xff0c;通过接收…

Git相关命令(二)

三、Team协作 分支概念&#xff1a;由于多人贡献于同一个仓库&#xff0c;但是又不能同时直接再仓库上修改&#xff0c;所以就需要从主仓库分支&#xff0c;每个人在自己对应的分支上操作&#xff0c;最后在合并到主仓库即可 1、fork 仓库。这是 github 的操作&#xff0c;而…

【Java面试题】操作系统

文章目录 1.进程/线程/协程1.1辨别进程和线程的异同1.2优缺点1.2.1进程1.2.2线程 1.3进程/线程之间通信的方法1.3.1进程之间通信的方法1.3.2线程之间通信的方法 1.4什么是线程上下文切换1.5协程1.5.1协程的定义&#xff1f;1.5.2使用协程的原因&#xff1f;1.5.3协程的优缺点&a…

Android-AR眼镜屏幕显示

Android-AR眼镜 前提&#xff1a;Android手持设备 需要具备DP高清口 1、创建Presentation&#xff08;双屏异显&#xff09; public class MyPresentation extends Presentation {private PreviewSingleBinding binding;private ScanActivity activity;public MyPresentatio…

后缀名是safetensors和pt、h5有什么区别

后缀名为.safetensors、.pt&#xff08;PyTorch tensor&#xff09;和.h5&#xff08;HDF5&#xff09;的文件都是用于存储深度学习模型的文件格式&#xff0c;但它们在设计目的、压缩效率、安全性和兼容性方面有所不同。 .safetensors 设计目的&#xff1a;.safetensors格式专…

大模型如何通过token进行推理?

大型模型通过token进行推理的过程通常涉及以下步骤&#xff1a; 1、Tokenization&#xff08;分词&#xff09;&#xff1a;首先&#xff0c;输入文本或序列被分割成tokens&#xff0c;这些tokens通常是单词、子词或字符的序列。这一步通常由预训练模型的tokenizers完成。 2、…

计算机网络:物理层 - 编码与调制

计算机网络&#xff1a;物理层 - 编码与调制 基本概念编码不归零制编码归零制编码曼彻斯特编码差分曼彻斯特编码 调制调幅调频调相混合调制 基本概念 在计算机网络中&#xff0c;计算机需要处理和传输用户的文字、图片、音频和视频&#xff0c;他们可以统称为消息数据&#xf…

[GXYCTF2019]StrongestMind

web请求类题目&#xff0c;要求1000次 import requests from bs4 import BeautifulSoup import time urlhttp://ad7bc925-bc7a-4881-8a75-9045b60d4ab2.node5.buuoj.cn:81/index.php srequests.session() #维持会话 datas.get(url) for i in range(1001):soupBeautifulSoup(d…

探究 HTTPS 的工作过程

目录 1. HTTPS 协议原理 1.1. 为什么要有HTTPS协议 1.2. 如何理解安全 1.3. HTTPS 协议是什么 2. HTTPS 的前置概念 2.1. 什么是加密 && 解密 2.2. 为什么要加密 2.3. 常见的加密方式 2.3.1. 对称加密 2.3.2. 非对称加密 2.4. 数据摘要 && 数据指纹…

MyBatis3源码深度解析(二十四)级联映射与关联查询(一)级联映射的使用

文章目录 前言第十章 MyBatis级联映射与懒加载10.1 MyBatis级联映射的使用10.1.1 简单查询10.1.1.1 数据准备10.1.1.2 编写实体类10.1.1.3 编写Mapper接口及XML配置文件10.1.1.4 编写MyBatis主配置文件10.1.1.5 编写单元测试 10.1.2 一对多级联映射10.1.2.1 外部Mapper方式10.1…

怎麼實現Nginx反向代理?

Nginx是一款開源軟體&#xff0c;可以作為Web伺服器、負載均衡器和反向代理使用&#xff0c;是高性能的HTTP和反向代理伺服器。其中反向代理是Nginx的一項重要特性。接下來&#xff0c;我們詳細講一下Nginx反向代理的實現和應用。 反向代理是什麼&#xff1f; 代理一詞通常指的…

使用第三方远程连接工具ssh连接vagrant创建的虚拟机

vagrant默认密码都是vagrant 密码认证默认是关闭的&#xff0c;进入虚拟机&#xff0c;打开密码认证 1、使用命令vi /etc/ssh/sshd_config进入配置&#xff0c;注意要切换到root用户&#xff0c;这个配置root有权限 2、找到PasswordAuthentication默认为no,改为yes 3、重启虚…

Redis如何应对缓存穿透问题——Java全栈知识(9)

我们在正常使用缓存的时候的流程大概就是这样的&#xff1a; 请求访问缓存&#xff0c;缓存有数据就返回&#xff0c;缓存无数据就去数据库里面查数据写入到缓存中。 1、缓存穿透问题 但是如果由恶意请求&#xff0c;短时间内大量的访问不存在的数据&#xff0c;这时每个请求…

暴力破解笔记

1 暴力破解简介 暴力破解&#xff1a; 蛮力攻击&#xff0c;又称为穷举攻击&#xff0c;或暴力破解&#xff0c;将密码进行逐个尝试验证&#xff0c;直到尝试出真正的密码为止。 暴力破解是指采用反复试错的方法并希望最终猜对&#xff0c;以尝试破解密码或用户名或找到隐藏的…

33岁TVB「御用少妻」近况曝光,中戏毕业后跑龙套8年终于上位。

日前&#xff0c;33岁无线小花刘温馨应邀出席了「香港首个女性健康运动与艺术文化慈善嘉年华」&#xff0c;并开心写道&#xff1a;「好开心参与到&#xff5e;香港首个女性健康运动与艺术文化慈善嘉年华 H.E.R Festival。片一&#xff1a;请找亮点。」片中刘温馨暂时其柔软的身…

3.26学习总结

java 实例变量和局部变量 实例变量是记录这个类中对象的特点的每一个对象的实例变量都可以不同(例如名字,性别等),其中一个对象的实例变量改变不会影响其他的变量. 类变量是一种特殊的实例变量,他的特殊在于所有的对象的类变量都是相同的,当一个对象改变了类变量那么所有对象…

雷卯推荐多种系列汽车级TVS供您选择

1. 车规级TVS的应用 2.车规级TVS系列表格如下 3.方案推荐 12V汽车电源浪涌保护方案 方案优点&#xff1a;用于满足前装汽车的ISO7637-2 5A5BA测试&#xff0c;可采用单独大功率的TVS或PTCTVS的组合方案&#xff0c;满足ISO10605-2&#xff0c; 等级4&#xff0c;接触放电15K…

初识云原生、虚拟化、DevOps

文章目录 K8S虚拟化DevOpsdevops平台搭建工具大数据架构 K8S master 主节点&#xff0c;控制平台&#xff0c;Master节点负责核心的调度、管理和运维&#xff0c;不需要很高性能&#xff0c;不跑任务&#xff0c;通常一个就行了&#xff0c;也可以开多个主节点来提高集群可用度…