首页 > 编程语言 >Python3项目初始化10-->前端基础jquery、ajax,sweetalert--创建用户删除用户改造

Python3项目初始化10-->前端基础jquery、ajax,sweetalert--创建用户删除用户改造

时间:2022-09-03 10:13:16浏览次数:84  
标签:jquery jQuery errors -- create 用户 result function user

32、JS基础-dmodal
点击“创建”,不调整新页面操作,直接弹出框操作。
modals弹框指示页面:https://v3.bootcss.com/javascript/#modals
拷贝代码,父节点在body里面。
<a class="btn btn-primary btn-create-user" href="javascript:void(0);">创建</a><br/><br/> <!--禁用href跳转功能-->
...
</div> <!-- /container -->
<!-- Modal -->
<div class="modal fade" id="dialog-user-create" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="myModalLabel">Modal title</h4>
</div>
<div class="modal-body">
...
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
...
jQuery('.btn-create-user').on('click', function () {
jQuery('#dialog-user-create').modal({
show: true,
backdrop: 'static'
});
});
</script>
页面点击“创建”,可以正常弹窗。如图展示结果。

32、JS基础-ajax_post
点击“创建”,设置创建页面.
页面展示index.html,
...
<table id="table_user" class="table table-stripe table-bordered table-hover table-condensed">
...
<div class="modal fade" id="dialog-user-create" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
...
<div class="modal-body">
<form class="form-horizontal form-create-user">
<div class="form-group">
<label class="control-label col-md-3">用户名:</label>
<div class="col-md-9">
<input type="text" class="form-control" name="name" value="" />
</div>
</div>
<div class="form-group">
<label class="control-label col-md-3">密码:</label>
<div class="col-md-9">
<input type="password" class="form-control" name="password" value="" />
</div>
</div>
<div class="form-group">
<label class="control-label col-md-3">再次输入密码:</label>
<div class="col-md-9">
<input type="password" class="form-control" name="other_password" value="" />
</div>
</div>
<div class="form-group">
<label class="control-label col-md-3">联系方式:</label>
<div class="col-md-9">
<input type="text" class="form-control" name="tel" value="" />
</div>
</div>
<div class="form-group">
<label class="control-label col-md-3">年龄:</label>
<div class="col-md-9">
<input type="text" class="form-control" name="age" value="" />
</div>
</div>
<div class="form-group">
<label class="control-label col-md-3">性别:</label>
<div class="col-md-9">
<label class="radio-inline"><input type="radio" name="sex" value="1" checked="checked"/>男</label>
<label class="radio-inline"><input type="radio" name="sex" value="0" />女</label>
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
<button type="button" class="btn btn-primary btn-save-user">保存</button>
</div>
</div>
</div>
...
<script>
jQuery(document).ready(function () {
jQuery('#table_user').DataTable();
});
jQuery('.btn-create-user').on('click', function () {
jQuery('#dialog-user-create').modal({
show: true,
backdrop: 'static'
});
});
jQuery('.btn-save-user').on('click', function () {
console.log('提交表单');
console.log(jQuery('.form-create-user').find('[name=name]').val());
console.log(jQuery('.form-create-user').serializeArray());

})
</script>
...
自此,页面展示正常。如截图。

ajax
a = async
ja = javascript
x = xml =>json
JQuery.post(url, data, function(result) {console.log(result)}, 'json')
JQuery.get(url, data, function(result) {console.log(result)}, 'json')

视图函数view.html:
from django.http import JsonResponse
'''
{
code:200(创建成功), 400(数据验证失败), 403(用户未登录)
result:{}
text: ''
errors:
}
'''
def create_ajax(request):
if not request.session.get('user'):
return JsonResponse({'code': 403})
is_valid, user, errors = UserValidator.valid_create(request.POST) # UserValidator.valid_create
if is_valid:
user.save()
return JsonResponse({'code': 200})
else:
return JsonResponse({'code': 400, 'errors': errors})
路由函数urls.py:
path('create/ajax', views.create_ajax, name='create_ajax'),
改造前端:
<form class="form-horizontal form-create-user">
{% csrf_token %}
...
jQuery('.btn-save-user').on('click', function () {
var data = jQuery('.form-create-user').serializeArray();
jQuery.post("{% url 'user:create_ajax' %}", data, function (result) {
console.log(result);
}, 'json')
});
</script>
访问验证,可以正常创建用户。
虽然可以创建用户成功,但是报错不明显。并且“保存”按钮可以一直保存多次。报错截图如下。

分类:
创建成功后,刷新页面
创建失败后有提示
未登录,直接直接提示
jQuery('.btn-save-user').on('click', function () {
var data = jQuery('.form-create-user').serializeArray();
jQuery.post("{% url 'user:create_ajax' %}", data, function (result) {
console.log(result);
if(result['code'] == 200){
alert('成功');
//关闭dialog
jQuery('.btn-create-user').modal('hide');
/*刷新table*/
window.location.reload()
} else if (result['code'] == 400){
//alert('验证失败...');
var errors = ['验证失败...']
jQuery.each(result['errors'], function (k,v) {
errors.push(v)
});
alert(errors.join('\n'))
}else if (result['code'] == 403){alert('未登录');}
}, 'json')
});
以上全部实现,如下截图。

遗留问题,每次alert弹出页面什么也做不了,需要借助其他工具sweetalert了。
以下操作,这样就比较平滑了。
jQuery('.btn-save-user').on('click', function () {
var data = jQuery('.form-create-user').serializeArray();
jQuery.post("{% url 'user:create_ajax' %}", data, function (result) {
console.log(result);
if(result['code'] == 200){
swal('成功', '', 'success')
//关闭dialog
jQuery('.btn-create-user').modal('hide');
/*刷新table*/
window.location.reload()
} else if (result['code'] == 400){
//alert('验证失败...');
var errors = []
jQuery.each(result['errors'], function (k,v) {
errors.push(v)
});
//alert(errors.join('\n'))
swal('验证失败', errors.join('\n'), 'error')
}else if (result['code'] == 403){
swal({
title: '未登录',
text: "未登录",
timer: 2000,
showConfirmButton: false
})
}
}, 'json')
});
</script>
验证ok,平滑弹出。

平滑删除。
sweetalert练习,
视图
def delete_ajax(request):
if not request.session.get('user'):
return JsonResponse({'code': 403})
uid = request.GET.get('id', '')
User.delete_by_id(uid)
return JsonResponse({'code': 200})
路由
path('delete/ajax', views.delete_ajax, name='delete_ajax'),
index页面处理
{% if request.session.user.id != user.id %}
<a class="btn btn-danger btn-xs btn-delete-user" data-id="{{ user.id }}" href="javascript:void(0)"}?uid={{ user.id }}">删除</a>
{% endif %}
jQuery('.btn-delete-user').on('click', function () {
var id=jQuery(this).attr('data-id');
swal({
title: "确定删除吗?",
text: '',
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "确定删除!",
cancelButtonText: "取消删除!",
closeOnConfirm: false,
closeOnCancel: true
},
function () {
//提交ajax删除数据
jQuery.get("{% url 'user:delete_ajax' %}", {'id':id},function (result) {
console.log(result);
if(result['code'] == 200){
swal({
title: "成功",
text:'',
type: "success"
}, function () {
//关闭sweetalert
swal.close();
/*刷新table*/
window.location.reload()
})
}else if(result['code'] == 400){
var errors = []
jQuery.each(result['errors'], function (k,v) {
errors.push(v);
});
swal('验证失败', errors.join('\n'), 'error')
}else if (result['code'] == 403){
swal({
title: "",
text: '',
timer: 2000,
showConfirmButton: false
});
}
})
})
})
</script>
验证可以正常,平滑删除。

引入sweetalert:https://sweetalert.bootcss.com/docs/

标签:jquery,jQuery,errors,--,create,用户,result,function,user
From: https://www.cnblogs.com/sunnyyangwang/p/16652039.html

相关文章

  • 第1章 从C到C++
    C++支持:面向过程编程、面向对象编程(OOP)和泛型编程。我们很难说C++拥有独立的编译器,例如Windows下的微软编译器(cl.exe)、Linux下的GCC编译器、Mac下的Clang编译器......
  • Debian 11 安装,超详细!
    安装装备华为源中下载镜像  https://repo.huaweicloud.com/debian-cd/11.0.0/amd64/iso-cd/3A服务器的虚拟机 开始安装配置虚拟机直接回车即可,第一次安装的小伙......
  • 自我介绍
    大家好,我叫曹甲松,如果用三个词语形容我那就是深思,好吃,好玩,所谓好吃我吃遍了新疆所有的小吃以至于谈起美食我可以给你讲的络绎不绝,与此同时我也拥有了比较圆润的身材,说我好......
  • springboot学习
    springboot学习官方文档:https://spring.io/projects/spring-boot1、简介1.1、什么是spirngboot?springboot在spring的基础之上,搭建起来的框架,能够帮助我们整合市面上......
  • springboot配置类@ConfigurationProperties报错Not registered via @EnableConfigurat
    添加一个@Component可以解决此问题,只有这个组件是容器中的组件,才能使用容器提供的@ConfigurationProperties功能。......
  • java一对一面试指导
    Java一对一面试指导大纲第一章:面试“潜规则” "潜规则"1:面试不是点对点回答问题,而是告诉面试官你会的技术面试的本质不是考试,不是点对点回答问题;而是自己出题,自己......
  • KingbaseESV8R6等待事件之lwlock buffer_content
    前言等待事件是排查数据库性能的指标之一。简单理解,cpu在处理业务时由于业务逻辑,和不可避免的数据库其他原因造成的前台进程等待,这里的等待事件包含buffer类,io类,以及网络......
  • java mysql截取所需数据
    mysql截取数据:例:截取门铺名称,门铺名称长度不确定{"进店日期":"2022-09-01","电话":"1********25","姓名":"张三","单号":"90817","门铺":"吴滨路店","消费金额":"......
  • django-celery-beat 获取下一次执行时间
    前言因为业务需要获取下一次执行时间在前端展示,查阅百度,谷歌都没能找到实现方式。通过官方文档https://django-celery-beat.readthedocs.io/en/latest/reference/django-c......
  • 2023秋招ing
    最近准备2023秋招,有感而发。1.压力。今天是真的经济形势不好吗?真的是因为疫情、制裁、战争对经济产生影响了吗?还是其实每年都一样的经济不景气,每年都一样的找工作难难......