设为首页 加入收藏

TOP

快速实现增删改查组件(起步阶段!!!)(二)
2017-12-18 12:37:24 】 浏览:474
Tags:快速 实现 删改 组件 起步 阶段
te/$ -> self.delete_view ^change/$ -> self.dchange_view ] - StarkSite 是一个容器,用于放置处理请求对应关系。 { model.UserInfo: UserInfoConfig(model.UserInfo,self), model.UserType: StarkConfig(model.UserType,self), }

 具体来写:当然前面的StarkSite类已经写过了,那我们来看看StarkConfig这个类

以下的功能实现都是在StarkConfig这个类里面的

功能实现一:展示页面,让页面上动态显示表格

class StarkConfig(object):
    list_display = []
    def __init__(self, model_class, site):
        self.model_class = model_class
        self.site = site
    def change_list_views(self,request,*args,**kwargs):
        data_list = self.model_class.objects.all()
        '''展示th的信息'''
        head_list = []
        for field_name in self.list_display:
            if isinstance(field_name,str):
                verbose_name = self.model_class._meta.get_field(field_name).verbose_name
            else:
                verbose_name = field_name(self,is_header=True)
            # yield {"verbose_name":verbose_name}
            head_list.append(verbose_name)

        '''展示td的信息'''

        # [["id","name"],["id","name"],["id","name"],]
        new_data_list = []
        for row in data_list:
            temp = []
            for field_name in self.list_display:
                if isinstance(field_name,str):
                    #如果是字符串类型的就是用getattr的方式,因为对象不能.字符串
                    val = getattr(row,field_name)
                else:
                    val = field_name(self,row)
                temp.append(val)
                # yield {"val":val}
            new_data_list.append(temp)
        return render(request, "stark/change_list_views.html", {"data_list":new_data_list,"head_list":head_list})

在stark.py 中

strak.py
    print("sssss6666666")
    from app01 import models
    from stark.service import v1
    from django.utils.safestring import mark_safe
    class UserInfoConfig(v1.StarkConfig):
        def checkbox(self,obj=None,is_header=False):
            if is_header:
                return "选择"
            return mark_safe("<input type='checkbox' name='zzzz' value='%s'/>"%obj.id)

        def edit(self,obj=None,is_header=False):
            if is_header:
                return "操作"
            return mark_safe("<a href='edit/%s'>编辑</a>"%obj.id)
        list_display = [checkbox,"id","name",edit]

    v1.site.register(models.UserInfo,UserInfoConfig)
    v1.site.register(models.Role,UserInfoConfig)
    v1.site.register(models.UserType)

 功能二:当然我们现在把按钮是自己定制的,有与编辑,删除等都是我们很常用的,所以我们可以搞成默认的。在StarkConfig类里写

 # ===============吧删除,编辑,复选框设置默认按钮==================

    def checkbox(self,obj=None,is_header=False):
        if is_header:
            return "选择"
        return mark_safe("<input type='checkbox' name='zzzz' value='%s'/>"%obj.id)

    def edit(self,obj=None,is_header=False):
        if is_header:
            return "操作"
        return mark_safe("<a href='%s'>编辑</a>"%(self.get_change_url(obj.id),))

    def delete(self,obj=None,is_header=False):
        if is_header:
            return "删除"
        #动态跳转路径,反向解析,因为每次都要用到,我们可以吧它封装到一个函数
        return mark_safe("<a href='%s'>删除</a>"%self.get_delete_url(obj.id))

    #做默认的删除和编辑。对这个方法重写的时候可以吧权限管理加进去,
    # 当它都什么权限的时候显示什么按钮。
    def get_list_display(self):
        data = []
        if self.list_display:
            data.extend(self.list_display) #在新的列表里面吧list_display扩展进来
            data.append(StarkConfig.edit)  #因为是默认的,直接在类里面去调用edit
            data.append(StarkConfig.delete)
            data.insert(0,StarkConfig.checkbox)
        return data

 功能三:默认显示添加按钮

 show_add
首页 上一页 1 2 3 4 5 下一页 尾页 2/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇从nginx日志原始二进制数据还原文.. 下一篇python 参数

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目