• 代码发布服务器管理


    
    #### 服务器相关逻辑
    
    from django.shortcuts import render, HttpResponse, redirect, reverse
    from app01 import models
    from django.http import JsonResponse
    from app01.myforms.server import ServerModelForm
    
    
    """
    标签渲染
    数据校验
    信息展示
    
    forms组件的功能
    modelform组件也可以完成上面的三个要求,并且功能更加的强大简单
    """
    class ServerModelForm(ModelForm):
        class Meta:
            model = models.Server
            fields = "__all__"
    
    
        def __init__(self,*args,**kwargs):
            super().__init__(*args,**kwargs)
            # print(self.fields)  # OrderedDict([('hostname', <django.forms.fields.CharField object at 0x10c99c198>)])
            # 给所有的字段加class属性
            for k,field_obj in self.fields.items():
                field_obj.widget.attrs['class'] = 'form-control'
    
    
    # 查
    def server_list(request):
        # 获取服务器所有的数据展示到前端页面
        server_queryset = models.Server.objects.all()
        return render(request, 'server_list.html', locals())
    
    
    # 增
    def server_add(request):
        # 1、先实例化modelform的额空对象
        form_obj = ServerModelForm()
        if request.method == 'POST':
            # 3、校验数据
            form_obj = ServerModelForm(data=request.POST)
            # 4、判断是否合法
            if form_obj.is_valid():
                form_obj.save()
                # 跳转到服务器的展示页
                # return redirect('/server/list/')  # 可以写路径
                return redirect('server_list')  # 可以写别名,但是如果出现有名无名分组的反向解析,还是得使用reverse
        # 2、将该对象传给HTML文件
        return render(request, 'form.html', locals())
    
    # 改
    def server_edit(request, edit_id):
        edit_obj = models.Server.objects.filter(pk=edit_id).first()
        """
        将对象传递给html页面,然后展示对象的所有信息
        由于添加页面和编辑页面其实是一模一样的,所以我们直接用同一个页面
        """
        # 1、生成一个待编辑的modelform对象
        form_obj = ServerModelForm(instance=edit_obj)
        if request.method == 'POST':
            # 如果不把instance=obj加上那就是新增了
            form_obj = ServerModelForm(data=request.POST, instance=edit_obj)
            if form_obj.is_valid():
                form_obj.save()  # 编辑操作
                return redirect('server_list')
        return render(request, 'form.html', locals())
    
    # 删
    def server_delete(request, delete_id):
        """真正的删除应该只是修改字段,但是我们这里就直接删除了"""
        models.Server.objects.filter(pk=delete_id).delete()
        return JsonResponse({'statue':True})
    

    针对删除功能,我们想做一个二次确认的过程(ajax结合sweetalert实现二次确认弹框)

    <script>
            function removeData(ths,sid) {
                var res = confirm('你缺点要删除吗?');
                {#alert(res)  //  布尔值#}
                if (res){
                    // 朝后端发送删除数据的请求
                    $.ajax({
                        url:'/server/delete/' + sid + '/',
                        type:'get',
                        success:function (args) {
                            // 删除成功之后 页面应该立刻展示删除之后的效果
                            // 1 直接刷新  不太好  设计到分页的情况不太好
                            {#window.location.reload()#}
                            if (args.status){
                                // 2 利用DOM操作实时删除
                                $(ths).parent().parent().remove()
                            }
                        }
                    })
                }
            }
        </script>
    
  • 相关阅读:
    Base64 加密之中文乱码
    JAVA 笔记 ReadWriteLock
    手机上的消息推送
    Erlang 聊天室程序(九) 主题房间2 房间信息管理
    阿里云服务器上安装GCC
    jq实现窗帘式图片
    Oracle版本问题!【急急急】
    解决 VSCode git commit 时 No such file or directory 报错问题
    GIT Authentication failed for错误问题处理
    h5接入微信分享sdk,报错Cannot read property of undefined (reading 'title')
  • 原文地址:https://www.cnblogs.com/yafeng666/p/12710487.html
Copyright © 2020-2023  润新知