一百二十八:CMS系统之轮播图的编辑和删除功能
编辑
form,继承添加的form
视图
@bp.route('/ubanners/', methods=['POST'])
@login_required
@permission_required(CMSPersmission.POSTER)
def ubanners():
""" 修改banner """
form = UpdateBannerForm(request.form)
if form.validate():
banner_id = form.banner_id.data
name = form.name.data
image_url = form.image_url.data
link_url = form.link_url.data
priority = form.priority.data
banner = BannerModel.query.get(banner_id)
if banner:
banner.name = name
banner.image_url = image_url
banner.link_url = link_url
banner.priority = priority
db.session.commit()
return restful.success()
else:
return restful.params_error('没有这个轮播图')
else:
return restful.params_error(form.get_error())
html:将数据渲染到tr标签上,方便js取值
js逻辑
在新增轮播图的逻辑上加一些修改
$(function () {
$('#save-banner-btn').click(function (event) {
event.preventDefault();
var self = $(this);
var dialog = $('#banner-dialog');
var nameInput = $('input[name="name"]');
var imageInput = $('input[name="image_url"]');
var linkInput = $('input[name="link_url"]');
var priorityInput = $('input[name="priority"]'); var name = nameInput.val();
var image_url = imageInput.val();
var link_url = linkInput.val();
var priority = priorityInput.val();
var submitType = self.attr('data-type'); // 提交类型,新增还是修改
var bannerId = self.attr('data-id'); // 数据id if(!name || !image_url || !link_url || !priority ){
xtalert.alertInfoToast('请输入完整数据');
return;
}
// 根据拿到的data-type类型区分url
var url = '/cms/abanners/';
if(submitType == 'update'){
url = '/cms/ubanners/';
}
ajax.post({
'url': url,
'data': {
'name': name,
'image_url': image_url,
'link_url': link_url,
'priority': priority,
'banner_id': bannerId
},
'success': function (data) {
dialog.modal('hide'); // 隐藏模态框
if(data['code'] == 200){
// 重新加载当前页面
window.location.reload();
}else{
xtalert.alertInfo(data['message']);
}
},
'fail': function (error) {
xtalert.alertNetworkError();
} });
});
}); //编辑轮播图
$(function () {
$('.edit-banner-btn').click(function (event) {
var self = $(this);
var dialog = $('#banner-dialog');
dialog.modal('show'); // 点击时显示模态框 //获取各属性值,即各字段的数据
var tr = self.parent().parent(); // 当前元素的上上级
var name = tr.attr('data-name');
var image_url = tr.attr('data-image');
var link_url = tr.attr('data-link');
var priority = tr.attr('data-priority'); //数据回显
var nameInput = dialog.find('input[name="name"]');
var imageInput = dialog.find('input[name="image_url"]');
var linkInput = dialog.find('input[name="link_url"]');
var priorityInput = dialog.find('input[name="priority"]');
var saveBtn = dialog.find('#save-banner-btn');
nameInput.val(name);
imageInput.val(image_url);
linkInput.val(link_url);
priorityInput.val(priority);
saveBtn.attr('data-type', 'update'); // 给保存按钮添加属性data-type='update'
saveBtn.attr('data-id', tr.attr('data-id')); // 把tr标签上的data-id加到保存按钮data-id属性上
});
});
删除
视图
@bp.route('/dbanners/', methods=['POST'])
@login_required
@permission_required(CMSPersmission.POSTER)
def dbanners():
""" 删除banner """
banner_id = request.form.get('banner_id')
if not banner_id:
return restful.params_error('请输入轮播图id')
banner = BannerModel.query.get(banner_id)
if not banner:
return restful.params_error('没有这个轮播图')
db.session.delete(banner)
db.session.commit()
return restful.success()
html添加一个class,方便绑定js事件
js
//删除banner
$(function () {
$('.delete-banner-btn').click(function (event) {
var self = $(this);
var tr = self.parent().parent();
var banner_id = tr.attr('data-id');
var banner_name = tr.attr('data-name');
xtalert.alertConfirm({
'msg': '确定删除名为:“' + banner_name + '” 的轮播图?',
'confirmCallback': function () {
ajax.post({
'url': '/cms/dbanners/',
'data': {
'banner_id': banner_id
},
'success': function (data) {
if(data['code'] == 200){
window.location.reload(); // 重新加载当前页面
}else{
xtalert.alertInfo(data['message']);
}
},
'fail': function (error) {
xtalert.alertNetworkError();
}
})
}
})
});
});
操作
一百二十八:CMS系统之轮播图的编辑和删除功能的更多相关文章
- 一百三十一:CMS系统之轮播图上传图片功能
将七牛js放到common下 把获取uptoken的接口放到common视图中 把初始化七牛放到banners.js中 //初始化七牛$(function () { qiniujs.setUp({ ' ...
- 一百二十六:CMS系统之轮播图管理页面布局和添加轮播图的模态对话框制作
视图 @bp.route('/banners/')@login_required@permission_required(CMSPersmission.POSTER)def banners(): re ...
- 一百二十:CMS系统之注册功能前后端逻辑
给提交按钮加一个id,方便写js js //发送ajax请求注册请求$(function () { $('#submit-btn').click(function (event) { event.pr ...
- 小程序实践(二):swiper组件实现轮播图效果
swiper组件类似于Android中的ViewPager,实现类似轮播图的效果,相对于Android的Viewpager,swiper实现起来更加方便,快捷. 效果图: 首先看下swiper支持的属 ...
- 一百二十七:CMS系统之添加轮播图前后台逻辑
后台逻辑 模型 from exts import dbfrom datetime import datetime class BannerModel(db.Model): __tablename__ ...
- Java开发笔记(一百二十八)Swing的图标
前面提过,AWT没提供能够直接显示图像的控件,这无疑是个令人诟病的短板,因为一上来就得由程序员自己去定义新控件,对于初学者来讲很不友好.这个问题在Swing中也解决掉了,不过Swing并未提供单独的图 ...
- 一百三十:CMS系统之七牛js和python的SDK使用示例
1.安装: pip install qiniu 2.编写获取uptoken的接口 @app.route('/uptoken/')def uptoken(): access_key = '' secre ...
- 一百二十三:CMS系统之登录功能
配置文件中加入前台用户的身份标识 form class SigninForm(BaseForm): telephone = StringField(validators=[Regexp(r'1[345 ...
- 一百二十一:CMS系统之注册后跳转到上一个页面
实现功能,访问测试页面的时候,跳转到注册页面,注册成功后跳转到测试页面 使用参数:若是从其他地址跳转过来时,头部信息中会携带参数referrer,此参数为从从哪个地址跳转到当前地址的,若是直接从浏览器 ...
随机推荐
- kubernetes容易混淆的几个端口
k8s服务的配置文件中几个端口参数,nodePort.port.targetPort,刚开始的时候不理解什么意思很容易混淆写错,这里总结一下,概括来说就是nodePort和port都是k8s的serv ...
- git提交失败总结
在用Git管理代码版本时,用git push命令提交代码,提示: [错误1] 错误原因:后来发现是提交大文件导致http postbuffer溢出,将postbuffer改大就可以了 解决办法:git ...
- 微信小程序开发(四)页面跳转
承接上篇博客. 通过点击按钮跳转到新的页面. 先创建新页面home: 代码如下: // home.js Page({}) // 注册页面 // home.json {} // home.wxml &l ...
- 4. Scrapy框架
Scrapy 框架 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页 ...
- Tomcat - Tomcat安装
Tomcat官网:http://tomcat.apache.org/ 准备:JAVA环境布置完成 一.Windows平台 1. 版本选择 1) 进入官网 2) 查看版本匹配 官网说明 https:// ...
- java--mybatis的实现原理
动态代理? 需要调试下,看下源码,再研究下……
- Loadrunner:脚本编写通用模板(Http协议类型)
1. 背景 对于 Http协议,Loadrunner 脚本可以使用通用模板反复粘贴,只需要修改其中的 URL 和 传参,就可以完成一整个业务 2. Get 类型的接口 web_custom_reque ...
- RHEL6 学习:使用 cryptsetup 给分区加密
RHEL6 学习:使用 cryptsetup 给分区加密 今天学习了 RHEL 对硬盘分区加密的知识,在 RHEL 系统里可以通过使用 cryptsetup 工具对硬盘分区进行加密,加密后的分区需要输 ...
- oracle汉字排序
oracle在9i之前是对汉字的排序是按照二进制编码进行排序的,很不适合我们的国情,在oracle9i之后,汉字的排序方式有了以下三种方式: 1.使用拼音排序 NLS_SORT=SC ...
- Luogu P4336 [SHOI2016]黑暗前的幻想乡 矩阵树定理+容斥原理
真是菜到爆炸....容斥写反(反正第一次写qwq) 题意:$n-1$个公司,每个公司可以连一些边,求每个边让不同公司连的生成树方案数. 矩阵树定理+容斥原理(注意到$n$不是很大) 枚举公司参与与否的 ...