当前位置: 首页 > news >正文

【银角大王——Django课程——Ajax请求】

Ajax请求

  • Ajax请求(页面不刷新)
    • 依赖JQuery
    • Ajax基本代码代码
      • url.py编写——他返回的是一个json数据
      • view.py编写
      • 在HTML中编写
      • 在model.py中编写
      • 最终显示样式
      • 为了是管理员表显示name而不是对象

Ajax请求(页面不刷新)

依赖JQuery

Ajax基本代码代码

{% block js %}<script type="text/javascript">$(function(){//页面框架加载完成之后代码自动执行bindBtnEvent();})function bindBtnEvent(){$("#btn1").click(function(){$.ajax({url:'/task/ajax/',type:"get",data:{n1:123,n2:456},dataType:"JSON",success:function(res){console.log(res);console.log(res.status);console.log(res.data);}})})}</script>
{% endblock %}

url.py编写——他返回的是一个json数据

    #任务管理path('task/list/',views.task_list),#path('task/ajax/',views.task_ajax),path('task/add/',views.task_add),

view.py编写

#导入
# from app01 import models
# from app01.utils.bootstrap import BootStrapModelForm
from django import forms
class TaskModelForm(BootStrapModelForm):class Meta:model =models.Taskfields ="__all__"widgets ={"detail":forms.TextInput}#任务列表
def task_list(request):#实例化form =TaskModelFormreturn render(request,"task_list.html",{"form":form})#导入
from django.views.decorators.csrf import csrf_exemptimport json
from django.http import JsonResponse
# @csrf_exempt
def task_ajax(request):print(request.GET)data_dict = {"status":True,'data':[11,22,33,44]}json_string = json.dumps(data_dict)return HttpResponse(json_string)#return JsonResponse(data_dict)@csrf_exempt
def task_add(request):#< QueryDict: {'level': ['1'], 'title': ['标题'], 'detail': ['详细信息'], 'user': ['2']} ># print(request.POST)#用户发送过来的数据进行校验(modelForm进行校验)form = TaskModelForm(data=request.POST)if form.is_valid():form.save()data_dict = {"status": True}return HttpResponse(JsonResponse(data_dict))data_dict ={"status":False,"error":form.errors}return HttpResponse(json.dumps(data_dict,ensure_ascii=False))

在HTML中编写

{% extends 'layout.html'%}{% block content %}<div class="container"><div class="panel panel-default"><div class="panel-heading">新建任务表单</div><div class="panel-body"><form  id="formAdd"><div class="clearfix">{% for field in form %}<div class="col-xs-6"><div class="form-group" style="position:relative; margin-bottom:20px;"><label >{{ field.label }}</label>{{ field }}<span class="error-msg" style="color:red; position: absolute;"></span></div></div>{% endfor %}<div class="col-xs-6"><button id="btnAdd" type="button" class="btn btn-primary">提 交</button></div></div></form></div></div><hr/><h1>Ajax学习</h1><h3>示例1</h3><input id="btn1" type="button" class="btn btn-primary" value="点击1" onclick="clickMe();"><h3>示例2</h3><input id="txtUser" type="text"  placeholder="姓名"><input id="txtAge" type="text"  placeholder="年龄"><input id="btn2" type="button" class="btn btn-primary" value="点击2" onclick="clickMe();"><h3>示例3</h3><form id="form3"><input name="user"  type="text"  placeholder="姓名"><input name="age" type="text"  placeholder="年龄"><input name="email"  type="text"  placeholder="邮箱"><input name="more"  type="text"  placeholder="介绍"><input id="btn3" type="button" class="btn btn-primary" value="点击3" ></form></div>{% endblock %}{% block js %}<script type="text/javascript">$(function(){//页面框架加载完成之后代码自动执行bindBtnEvent();bindBtnEvent2();bindBtnEvent3();bindBtnAddEvent();})function bindBtnEvent(){$("#btn1").click(function(){$.ajax({url:'/task/ajax/',type:"get",data:{n1:123,n2:456},dataType:"JSON",success:function(res){console.log(res);console.log(res.status);console.log(res.data);}})})}function bindBtnEvent2(){$("#btn2").click(function(){$.ajax({url:'/task/ajax/',type:"get",data: {name:$("#txtUser").val(),age:$("#txtAge").val()},dataType:"JSON",success:function(res){console.log(res);console.log(res.status);console.log(res.data);}})})}function bindBtnEvent3(){$("#btn3").click(function(){$.ajax({url:'/task/ajax/',type:"get",data:$("#form3").serialize(),dataType:"JSON",success:function(res){console.log(res);console.log(res.status);console.log(res.data);}})})}function bindBtnEvent3(){$("#btnAdd").click(function(){$(".error-msg").empty();$.ajax({url:'/task/add/',type:"post",data:$("#formAdd").serialize(),dataType:"JSON",success:function(res){if(res.status){alert("添加成功!")} else {$.each(res.error,function(name,data){$("#id_"+ name).next().text(data[0]);})}}})})}</script>
{% endblock %}

在model.py中编写

#任务表    
class Task(models.Model):level_choices ={(1,"紧急"),(2,"重要"),(3,"临时"),}level = models.SmallIntegerField(verbose_name="级别",choices=level_choices,default=1)title = models.CharField(verbose_name="标题",max_length=64)detail = models.TextField(verbose_name="详细信息")user = models.ForeignKey(verbose_name="负责人",to="Admin",on_delete=models.CASCADE)

最终显示样式

在这里插入图片描述

为了是管理员表显示name而不是对象

在这里插入图片描述请添加图片描述

#输出显示函数——不输出对象def __str__(self):return self.username

注:为了节约时间不像之前那样详细,之后有时间复习我会重新编辑。

相关文章:

  • FJSP:波搜索算法(WSA)求解柔性作业车间调度问题(FJSP),提供MATLAB代码
  • 压测工具sysbench
  • 性能监控计算——封装带性能计算并上报的npm包(第三章)
  • 【TIPs】 Visual Stadio 2019 中本地误使用“git的重置 - 删除更改 -- hard”后,如何恢复?
  • 初识SDN
  • python-数据可视化(总)
  • Qt for Android
  • 代码随想录--哈希表--两数之和
  • 关于模拟信道和数字信道根本区别的探讨
  • 常用maven - jar 下载与 安装
  • 国产可视化爬虫助力AI大模型训练:精准爬取汉语词典
  • cv2函数实践-图像处理(中心外扩的最佳RoI/根据两个坐标点求缩放+偏移后的RoI/滑窗切片/VOC的颜色+调色板)
  • 顶点着色技术在AI去衣中的作用
  • OJ1230进制的转换
  • HarmonyOS鸿蒙学习笔记(27)resources目录说明
  • 【知识碎片】第三方登录弹窗效果
  • 〔开发系列〕一次关于小程序开发的深度总结
  • 230. Kth Smallest Element in a BST
  • Bootstrap JS插件Alert源码分析
  • express + mock 让前后台并行开发
  • HTML中设置input等文本框为不可操作
  • JAVA 学习IO流
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • js继承的实现方法
  • js正则,这点儿就够用了
  • Just for fun——迅速写完快速排序
  • React组件设计模式(一)
  • REST架构的思考
  • 回顾 Swift 多平台移植进度 #2
  • 记一次用 NodeJs 实现模拟登录的思路
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 前端工程化(Gulp、Webpack)-webpack
  • 全栈开发——Linux
  • linux 淘宝开源监控工具tsar
  • ​油烟净化器电源安全,保障健康餐饮生活
  • # include “ “ 和 # include < >两者的区别
  • # 数仓建模:如何构建主题宽表模型?
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (Note)C++中的继承方式
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (Python) SOAP Web Service (HTTP POST)
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (佳作)两轮平衡小车(原理图、PCB、程序源码、BOM等)
  • (三十)Flask之wtforms库【剖析源码上篇】
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (一)Neo4j下载安装以及初次使用
  • (转)重识new
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .NET CORE 第一节 创建基本的 asp.net core