博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Flask实战第53天:cms编辑轮播图功能完成
阅读量:4320 次
发布时间:2019-06-06

本文共 3616 字,大约阅读时间需要 12 分钟。

后端逻辑

表单验证, 这里编辑就是和添加的内容一样,所以可以直接继承添加轮播图的表单验证,然后多加一个轮播图的id即可

编辑cmd.forms.py

class UpdateBannerForm(AddBannerForm):    banner_id = IntegerField(validators=[InputRequired(message='请输入轮播图的id!')])

视图,编辑cms.views.py

...from .forms import  UpdateBannerForm@bp.route('/ubanner/',methods=['POST'])@login_requireddef ubanner():    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 xjson.json_success()        else:            return xjson.json_param_error(message='没有这个轮播图!')    else:        return xjson.json_param_error(message=form.get_error())

前端逻辑

当我们点击编辑,也是弹出一个模态框,而且这个模态框其实是和添加轮播图的模态框是一样的。不同的地方就是编辑的模态框有内容。

因此我们可以复用之前的模态框,并把内用填充进表单即可。

现在关键是如何获取内容?

这里有个方法就是把需要的内容存到元素的属性中,如下,我们存入到tr标签的属性中

我们有存入:

  data-name="{

{ banner.name }}"

  data-image="{

{ banner.image_url }}"

  data-link="{

{ banner.link_url }}"

  data-priority="{

{ banner.priority }}"

  data-id="{

{ banner.id }}"

{% for banner in banners %}                    {
{ banner.name }} {
{ banner.image_url }}
{
{ banner.link_url }}
{
{ banner.priority }} {
{ banner.create_time }} {% endfor %}

这样我们通过js获取定位到“编辑”按钮,获取这个 按钮的父元素(td)的父元素(tr)的属性值,然后把需要的值填入到表单就可以了。

编辑banners.js

$(function () {    $("#save-banner-btn").click(function (event) {        event.preventDefault();        self = $(this);        var dialog = $("#banner-dialog");        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 name = nameInput.val();        var image_url = imageInput.val();        var link_url = linkInput.val();        var priority = priorityInput.val();        //通过保存按钮上的属性data-type,获取数据类型,如果它的值是update,就是编辑操作了,否则就是添加操作        var submitType = self.attr('data-type');        //这里通过保存按钮上的属性data-id获取到轮播图的id, 如果是添加轮播图这就是个空值,不用管它        var bannerId = self.attr("data-id");        if(!name || !image_url || !link_url || !priority){            zlalert.alertInfoToast('请输入完整的轮播图数据!');            return;        }        //根据submitType的值来判断url应该是添加还是编辑        var url = '';        if(submitType == 'update'){            url = '/cms/ubanner/';        }else{            url = '/cms/abanner/';        }        bbsajax.post({            "url": url,   //这里就要改成动态获取上面的url了            "data": {                'name':name,                'image_url': image_url,                'link_url': link_url,                'priority':priority,                'banner_id': bannerId    //这里需要多传入一个轮播图id,就是是添加操作也无所谓,后端也没接收            },            'success': function (data) {                dialog.modal("hide");                if(data['code'] == 200){                    // 重新加载这个页面                    window.location.reload();                }else{                    zlalert.alertInfo(data['message']);                }            },            'fail': function () {                zlalert.alertNetworkError();            }        });    });});

到此,我们轮播图的编辑功能就完成了!

转载于:https://www.cnblogs.com/sellsa/p/9563268.html

你可能感兴趣的文章
团队编程项目作业2-团队编程项目开发环境搭建过程
查看>>
Stax解析XML示例代码
查看>>
cookie
查看>>
二级图片导航菜单
查看>>
<Using parquet with impala>
查看>>
07-Java 中的IO操作
查看>>
uclibc,eglibc,glibc之间的区别和联系【转】
查看>>
Java魔法堂:找外援的利器——Runtime.exec详解
查看>>
mysql数据库存放路径
查看>>
TestNG(五)常用元素的操作
查看>>
解决 Visual Studio 点击添加引用无反应的问题
查看>>
通过镜像下载Android系统源码
查看>>
python字符串格式化 %操作符 {}操作符---总结
查看>>
windows 不能在 本地计算机 启动 Apache
查看>>
iOS开发报duplicate symbols for architecture x86_64错误的问题
查看>>
Chap-6 6.4.2 堆和栈
查看>>
【Java学习笔记之九】java二维数组及其多维数组的内存应用拓展延伸
查看>>
C# MySql 连接
查看>>
sk_buff Structure
查看>>
oracle的级联更新、删除
查看>>