编辑

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系统之轮播图的编辑和删除功能的更多相关文章

  1. 一百三十一:CMS系统之轮播图上传图片功能

    将七牛js放到common下 把获取uptoken的接口放到common视图中 把初始化七牛放到banners.js中 //初始化七牛$(function () { qiniujs.setUp({ ' ...

  2. 一百二十六:CMS系统之轮播图管理页面布局和添加轮播图的模态对话框制作

    视图 @bp.route('/banners/')@login_required@permission_required(CMSPersmission.POSTER)def banners(): re ...

  3. 一百二十:CMS系统之注册功能前后端逻辑

    给提交按钮加一个id,方便写js js //发送ajax请求注册请求$(function () { $('#submit-btn').click(function (event) { event.pr ...

  4. 小程序实践(二):swiper组件实现轮播图效果

    swiper组件类似于Android中的ViewPager,实现类似轮播图的效果,相对于Android的Viewpager,swiper实现起来更加方便,快捷. 效果图: 首先看下swiper支持的属 ...

  5. 一百二十七:CMS系统之添加轮播图前后台逻辑

    后台逻辑 模型 from exts import dbfrom datetime import datetime class BannerModel(db.Model): __tablename__ ...

  6. Java开发笔记(一百二十八)Swing的图标

    前面提过,AWT没提供能够直接显示图像的控件,这无疑是个令人诟病的短板,因为一上来就得由程序员自己去定义新控件,对于初学者来讲很不友好.这个问题在Swing中也解决掉了,不过Swing并未提供单独的图 ...

  7. 一百三十:CMS系统之七牛js和python的SDK使用示例

    1.安装: pip install qiniu 2.编写获取uptoken的接口 @app.route('/uptoken/')def uptoken(): access_key = '' secre ...

  8. 一百二十三:CMS系统之登录功能

    配置文件中加入前台用户的身份标识 form class SigninForm(BaseForm): telephone = StringField(validators=[Regexp(r'1[345 ...

  9. 一百二十一:CMS系统之注册后跳转到上一个页面

    实现功能,访问测试页面的时候,跳转到注册页面,注册成功后跳转到测试页面 使用参数:若是从其他地址跳转过来时,头部信息中会携带参数referrer,此参数为从从哪个地址跳转到当前地址的,若是直接从浏览器 ...

随机推荐

  1. 01_Redis简述

    一:关系型数据库和非关系型数据库的区别: 1:关系型数据库(SQL):数据和数据之间,表和字段之间,表和表之间是存在关系的: 优点:数据之间有关系,进行数据的增删改查时非常方便的:关系型数据库有事务操 ...

  2. 反编译DLL并修改DLL中的内容

    使用场景:针对当前用户因不愿意进行软件版本升级,但又希望可以解决当前问题,此时可以考虑通过反编辑DLL进行修改内容,然后重新生成新的DLL 操作步骤: 1.首先使用ILSpy.exe反编译DLL,查看 ...

  3. 团队第二次作业:需求分析&系统设计

    所属课程 https://edu.cnblogs.com/campus/xnsy/Autumn2019SoftwareEngineeringFoundation/ 作业要求 https://edu.c ...

  4. CentOS7 - Package does not match intended download 问题解决

    yum 安装软件,有时会出现 Error: Package does not match intended download,这时需要彻底清除已有的下载,然后重新安装即可. $ sudo yum cl ...

  5. 【JOISC2012】fish

    Description 有 \(n\) 条鱼,第 \(i\) 条鱼的长度为 \(L_i\),颜色是 \(C_i\)(\(C_i\) 只能是 'R','G','B'). 你需要从中挑出至少一条鱼,要求挑 ...

  6. idea将普通目录转换为模块maven module。

    假如你想把aaa这个目录改为像common一样的Module,在aaa目录下新建一个同名的aaa.iml,然后粘贴这段代码 <?xml version="1.0" encod ...

  7. python_连接MySQL数据库(未完)

    1.增 # 导入库 import pymysql # 创建连接 conn = pymysql.connect(host='localhost',user='root',password='fuqian ...

  8. File "/usr/bin/pip", line 11, in <module> sys.exit(__main__._main()) AttributeError: 'module' object has no attribute '_main'

    多个版本pip共存导致 直接使用pip2进行安装即可 如:pip2 install requests

  9. 第四章 Jinja2模版

    模板简介: 在之前的章节中,视图函数只是直接返回文本,而在实际生产环境中的页面大多是带有样式和复杂逻辑的HTML代码,这可以让浏览器渲染出非常漂亮的页面.目前市面上有非常多的模板系统,其中最知名好用的 ...

  10. BZOJ 3210: 花神的浇花集会 (切比雪夫距离)

    GXZlegend 切比雪夫和曼哈顿距离的互相转化看这里 传送门 CODE #include <bits/stdc++.h> using namespace std; #define LL ...