django基础之day08,ajax结合sweetalert的使用
models.py文件
from django.db import models
class User(models.Model):
	username=models.CharField(max_length=32)
	age=models.IntegerField()
	gender_choices=(
		(1,'male'),
		(2,'female'),
		(3,'other')
	)
	gender=models.IntegerField(choices=gender_choices)
urls.py文件
urlpatterns=[
	url(r'^admin/', admin.site.urls),
    #首页
    url(r'^$',views.home)
]
settings.py文件
STATICFILES_DIRS=[
	os.path.join(BASE_DIR,'static')
]
#另外注释csrf中间件
views.py文件
from django.shortcuts import render
from app01 import models
import time
from django.http import JsonResponse
'''
如果是ajax进行前后端交互,
通常后端会返回给ajax一个字典
'''
def home(request):
	'''
	思路整理:
		前提:
			查询出User表中全部数据
			locals()提交全部数据到home.html页面
	前端页面请求到后端以后:
	1.先判断是不是ajax请求
	2.是ajax请求的,返回字典:{'code':1000,'msg':''}
	3.获取删除数据对应的id值
	4.设置页面睡眠3秒钟
	5.执行删除
	6.然后给back_dic字典中的msg做赋值操作,数据已经删除
	7.通过Jsonresponse把back_dic 字典返回给前端页面
	'''
	#代码如下:
	if request.is_ajax():
		back_dic={'code':1000,'msg':''}
		delete_id=request.POST.get('delete_id')
		time.sleep(3)
		models.User.objects.filter(pk=delete_id).delete()
		back_dic['msg']='数据已经被我删除掉了'
		return JsonResponse(back_dic)
	user_queryset=models.User.objects.all()
	查询出User表中的全部数据
	return render(request,'home.html',locals())
	返回所有数据到home.html页面上
homt.html文件
'''
首先动态配置静态文件
其次配置bootstrap文件和sweetalert文件的样式js和cs
'''
{% load static %}
<link rel='stylesheet' href='{% static 'boot3.7/css/boot.min.css' %}'>
<script src='{% static 'boot3.7/js/boot.min.js' %}'></script>
<link rel='stylesheet' href='{% static 'dist/sweetalert.css' %}'>
<script src='{% dist/sweetalert.min.js %}'></script>
<style>
	div.sweet-alert h2{
		padding:10px
	}
</style>
<div class='container-fluid'>
	<div class='row'>
		<div class='col-md-8 col-md-offset-2'>
			<h2>首先展示</h2>
			<br>
			<table class='table table-hover table-bordered table-striped'>
				<thead>
				<tr>
					<th>序号</th>
					<th>用户名</th>
					<th>年龄</th>
					<th>性别</th>
					<th class='text-center'>操作</th>
				</tr>
				</thead>
				<tbody>
				{% for userobj in user_queryset %}
					<tr>
						<td>{{forloop.counter}}</td>	#计数
						<td>{{userobj.username}}</td>
						<td>{{userobj.age}}</td>
						<td>{{userobj.get_gender_display}}</td>
						固定用法获取gender,_display会自动加括号,所以此处display后面不能有括号
						<td class='text-center'>
							<a href='#' class='btn btn-primary btn-sm'>编辑</a>
							<a href='#' class='btn btn-danger btn-sm cancel userId={{userobj.pk}}'>删除</a>
						</td>
					</tr>
				{% endfor %}
				</tbody>
			</table>
		</div>
	</div>
</div>
给删除绑定一个点击事件
<script>
	为删除添加一个绑定事件,利用cancel来指定删除事件
	$('.cancel').click(
		function(){
			朝后端发送ajax请求,如何拿到当前按钮所对应的数据的主键值id?
			先把$btn单独先存储起来,老师的思路是,添加自定义属性userId={{userobj.pk}}获取pk的值
			var $btn = $(this)
			swal({
                    title: "Are you sure?",
                    text: "You will not be able to recover this imaginary file!",
                    type: "warning",
                    showCancelButton: true,
                    confirmButtonClass: "btn-danger",
                    confirmButtonText: "Yes, delete it!",
                    cancelButtonText: "No, cancel plx!",
                    closeOnConfirm: false,
                    closeOnCancel: false,
                    showLoaderOnConfirm: true
                },
                function (isConfirm) {
                    if (isConfirm) {
                        //朝后端发送ajax请求
						$.ajax({
							url:'',
							type:'post',
							data:{'delete_id':$btn.attr('userId')}
							//$btn指代当前被点击删除的按钮,$btn.attr指代当前删除按钮对应的属性,删除数据所对应的pk值
							success:function(data){
								if (data.code==1000){
									swal('猪脑泡泡龙','删了','success')
									//通过DOM操作,来直接操作标签,删除对应的数据
									//当前标签点父级标签点父级标签点移除
									$btn.parent().parent().remove()
								}else{
									swal('有bug','未知错误','warning')
								}
							}
						})
                    } else {
                        swal("Cancelled", "Your imaginary file is safe :)", "error");
                    }
                });
		}
	)
</script>
												
											django基础之day08,ajax结合sweetalert的使用的更多相关文章
- {Django基础七之Ajax}    一 Ajax简介     二 Ajax使用     三 Ajax请求设置csrf_token     四 关于json     五 补充一个SweetAlert插件(了解)
		
Django基础七之Ajax 本节目录 一 Ajax简介 二 Ajax使用 三 Ajax请求设置csrf_token 四 关于json 五 补充一个SweetAlert插件(了解) 一 Ajax简介 ...
 - {Django基础七之Ajax} 一 Ajax简介 二 Ajax使用 三 Ajax请求设置csrf_token 四 关于json 五 补充一个SweetAlert插件(了解)
		
{Django基础七之Ajax} 一 Ajax简介 二 Ajax使用 三 Ajax请求设置csrf_token 四 关于json 五 补充一个SweetAlert插件(了解) Django基础七之 ...
 - day 72  Django基础七之Ajax
		
Django基础七之Ajax 本节目录 一 Ajax简介 二 Ajax使用 三 Ajax请求设置csrf_token 四 关于json 五 补充一个SweetAlert插件(了解) 六 同源策略与 ...
 - day  60  Django基础七之Ajax
		
Django基础七之Ajax 本节目录 一 Ajax简介 二 Ajax使用 三 Ajax请求设置csrf_token 四 关于json 五 补充一个SweetAlert插件(了解) 六 同源策 ...
 - Django基础五之Ajax
		
Django基础五之Ajax 目录 Django基础五之Ajax 1. Ajax介绍 2. Ajax前后端传值 2.1 方法一HttpResponse直接返回 2.2 方法二使用Json格式返回 2. ...
 - Django中数据传输编码格式、ajax发送json数据、ajax发送文件、django序列化组件、ajax结合sweetalert做二次弹窗、批量增加数据
		
前后端传输数据的编码格式(contentType) 提交post请求的两种方式: form表单 ajax请求 前后端传输数据的编码格式 urlencoded formdata(form表单里的) ja ...
 - Django基础七之Ajax
		
一 Ajax简介 1.简介 AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步的Javascript和XML”.即使用Javascript语言与服务器进行异 ...
 - 09.Django基础七之Ajax
		
一 Ajax简介 1.简介 AJAX(Asynchronous Javascript And XML)翻译成中文就是"异步的Javascript和XML".即使用Javascrip ...
 - django基础知识之Ajax:
		
使用Ajax 使用视图通过上下文向模板中传递数据,需要先加载完成模板的静态页面,再执行模型代码,生成最张的html,返回给浏览器,这个过程将页面与数据集成到了一起,扩展性差 改进方案:通过ajax的方 ...
 
随机推荐
- 20191031-3 beta week 1/2 Scrum立会报告+燃尽图 01
			
此作业要求参见[https://edu.cnblogs.com/campus/nenu/2019fall/homework/9911] 一.小组情况 队名:扛把子 组长:孙晓宇 组员:宋晓丽 梁梦瑶 ...
 - 《HelloGitHub》第 44 期
			
兴趣是最好的老师,HelloGitHub 就是帮你找到兴趣! 简介 分享 GitHub 上有趣.入门级的开源项目. 这是一个面向编程新手.热爱编程.对开源社区感兴趣 人群的月刊,月刊的内容包括:各种编 ...
 - 【集训Day4 动态规划】【2018寒假集训 Day4 更新】蛙人
			
蛙人 (ple) 蛙人使用特殊设备潜水.设备中有一个气瓶,分两格:一格装氧气,另一格装氮气.留在水中有时间的限制,在深水中需要大量的氧气与氮气.为完成任务,蛙人必须安排好气瓶.每个气瓶可以用它的重量和 ...
 - C语言基础——进制转换 / 数据表示
			
第一部分:进制转换 二进制:由0~1构成,逢2进1 八进制:由0~7构成,逢8进1 十六进制:由0~9.A~F构成,逢16进1 两个基本概念 基数:n进制基数为n 123.4 = 1*10^2 + 2 ...
 - 邮箱基础协议:SMTP/POP3/IMAP
			
目录 电子邮件的组成:信封.首部和正文 邮件基础协议 SMTP SMTP 指令 使用 Telnet 模拟 SMTP 发送邮件 POP3 POP3 的生命周期 IMAP 标志消息属性 状态和流程图 IM ...
 - 几种常见设计模式在项目中的应用<Singleton、Factory、Strategy>
			
一.前言 前几天阅读一框架文档,里面有一段这样的描述 “从对象工厂中………” ,促使写下本文.尽管一些模式简单和简单,但是常用.有用. 结合最近一个项目场景回顾一下里面应用到的一些模式<Sing ...
 - 前端vue如何下载或者导出word文件和excel文件
			
前端用vue怎么接收并导出文件 window.location.href = "excel地址" 如果是 get 请求,那直接换成 window.open(url) 就行了 创建一 ...
 - MySQL   库、表、记录、相关操作(1)
			
库.表.记录.相关操作(1) 数据库配置 # 通过配置文件统一配置的目的:统一管理 服务端(mysqld) .客户端(client) # 配置了 mysqld(服务端) 的编码为utf8,那么再创建的 ...
 - C++ 入门第一篇  Hello Word
			
C++基础教程 ...
 - Blazor 版 Bootstrap Admin 通用后台权限管理框架
			
前言 上一篇介绍过了前后台分离的 NET Core 通用权限管理系统 在这篇文章简要的介绍了 Bootstrap Admin 后台管理框架的一些功能.本篇文章带来的是微软最新出的 Blazor 版本的 ...