zoukankan      html  css  js  c++  java
  • 权限组件

    实例方法和函数的区别

    class Person(object):
          def __init__(self,name)
               self.name=name
          def speak(self):
    print(self)
    # 实例方法 la
    =Person("la") la.eat() # 为什么不需要传参数,这是因为self把调用他的对象当成了参数
    结果是:
    la

    # 函数调用则必须穿参数,否则会报错
    Person.speak(123) # 此时self就等同于123
    结果是:
    123

     而在list_display当中,视图是直接调用的,因此需要传参数

    在注册时定义:
    class ArtileConfig(Xadmin.ModelXadmin):
        def add_0(self,obj=None,header=False):
            if header:
                return "操作"
            else:
                url=reverse(self.model._meta.model_name+"_add")
                return  mark_safe("<a href='%s'>添加</a>"%url)
       
        list_display=[checkbox,"title","up_count","down_count",add_0]

    在另外一个py文件中调用,因此需要自己传参数




    在Xadmin中调用:
    def test(self, request, *args): data_list=self.model.objects.all() # 返回的是queryset列表 items_list=[] title_list=[] for field in self.list_display: if isinstance(field, str): title_list.append(self.model._meta.get_field(field).verbose_name) # 求字段名 else: # if callable(field) 判断是不是函数 # 函数怎么命名 title_list.append(field(self,header=True)) for obj in data_list: item=[] for field in self.list_display: #["title","desc",add_0] if isinstance(field,str): # 求字段名 item.append(getattr(obj,field)) # 当是多对多的关系时,这个也可以的 else: item.append(field(self,obj)) items_list.append(item) return render(request, "XXadmin/XXadmin_check.html",{"items_list":items_list,"title_list":title_list})

    url分发缺陷,用表名当做反向解析,会出现重复,在不同的app中,可能会有同名的表

    @property
        def url(self):                     # self指调用他的对象,也就是site调用
            table_name = self.model._meta.model_name
            app_name = self.model._meta.app_label
            url = []
            url.append(re_path('^add/$',self.test,name=table_name+"_add"))
            url.append(re_path('^delete/(d+)',self.test,name=table_name+"_delete")) 
            url.append(re_path('^update/(d+)',self.test,name=table_name+"_update"))
            url.append(re_path('^check/(d+)',self.test,name=table_name+"_check"))
            url.append(re_path('^$',self.test,name=table_name+"_home"))
            return url,None,None        # [re_path('^delete/(d+)',test),],None,None

    因此可以加上app的名字,相当于加上了namespace,这样重复的概率就会很低

    如何展示不同的表,  把数据放在

  • 相关阅读:
    hdu 1754
    hdu 1166
    poj 1193
    如何由XSD自动生成XML和实体类
    WinForm(C#)CheckedlistBox绑定数据,并获得选中的值(ValueMember)和显示文本(DisplayMember)
    C#读写共享文件夹
    去除TFS版本控制信息
    SQL 触发器
    C#中操作WMI的类库-实现远程登录共享
    VS 制作安装包小窥
  • 原文地址:https://www.cnblogs.com/AbnerLc/p/11186604.html
Copyright © 2011-2022 走看看