zoukankan      html  css  js  c++  java
  • stark组件数据库管理软件的总结

     

    1、stark - 总结

    用到的知识点:

      1.单例模式

      2.继承

      3.反射 

      4.面向对象 

      5.modelform


    1.注册表
    单例模式
     site = StarkSite()

    2.生成url
        url(r'^stark/', ([],None,None))

    3.数据列表展示
    可自定制配置显示:
        list_display = ["__str__"]
        list_display_links = []
        modelform_class = []
        search_fields = []
        actions = []
        list_filter = []

    4.增删改页面 modelform

    5.分页
        自定义分页组件 stark/utils/page.py
        class Pagination(object):
            ...

    6.search模糊查询
    Q查询 or
        search_connection = Q()
        ...
        data_list = self.model.objects.all().filter(search_connection)

    7.action批量处理
    def patch_init(self, request, queryset):
            queryset.update(price=123)
            ...
        patch_init.short_description = "批量初始化"
        actions = [patch_init]
        queryset = self.model.objects.filter(pk__in=selected_pk)

    8.filter过滤
    list_filter = ['title','publish', 'authors']
        eg:{"publish":["<a href=''>全部</a>","<a href=''>南京出版社</a>","<a href=''>上海出版社</a>"]
            "authors":["<a href=''>全部</a>""<a href=''>yuan</a>","<a href=''>egon</a>"]
            }
    
        Q查询 and
        filter_condition = Q()
        data_list = self.model.objects.all().filter(search_connection).filter(filter_condition)

    9.pop弹出
    在一对多和多对多字段后渲染 +
    +对应的跳转路径
    保存添加记录同时,将原页面的对应的下拉菜单中添加该记录

    2、各种小知识点

     
    from django.test import TestCase
    
    # Create your tests here.
    
    #
    # class  A(object):
    #
    #     x=12
    #     def __init__(self,m):
    #         self.z = m
    #     def xxx(self):
    #         print(self.x)
    #         print(self.z)
    #
    # class B(A):
    #     x=5
    #     z = 11
    #
    # b=B(10)
    # b.xxx()
    
    #######################################
    #
    # class Person(object):
    #     def __init__(self,name):
    #         self.name = name
    #
    # alex = Person('alex')
    # print(alex.name)
    #
    # s = 'name'
    #
    # # print(alex.s)  # 用反射
    #
    # getattr(alex,s)
    #
    # print(getattr(alex,s))
    
    #######################################
     # 没学面向对象之前,都是函数 ,
    
    # 函数 方法
    
    # class Person(object):
    #     def __init__(self,name):
    #         self.name = name
    #
    #     def eat(self):  # 方法!
    #         print(self)
    #         print('eating...')
    #
    # # 实例方法
    # # egon = Person('egon')
    # # egon.eat()
    #
    # # 函数
    # Person.eat('ss')
    
    #######################################
    
    # list = [1,2,3]
    # list.append(4)
    # print(list)
    # list.insert(0,100)
    # print(list)
    
    #######################################
    # li = []
    # print(len(li))
    #
    # s = "sss"
    # print(isinstance(s,str))
    
    #######################################
    
    # class Person(object):
    #     def __init__(self,name):
    #         self.name = name
    #
    #     def __str__(self):
    #         return self.name
    #
    # alex = Person('alex')
    # # print(alex.name)
    # # print(alex)
    #
    # print(alex.__str__())
    # print(str(alex))
    #
    # print(getattr(alex,'__str__')())
    
    
    #######################################
    # temp = []
    # temp.append(1)
    # temp.extend([1,2,3])
    # print(temp)
    
    #######################################
    
    # def foo():
    #     return
    #
    # print(foo.__name__)
    
    
    #######################################
    # 查询是字段名称
    # Book.objects.filter(Q(title='yuan')|Q(price='123'))
    
    # Q() 查询放str,
    # q = Q()
    # q.connection = 'or'
    # q.children.append(('title','yuan'))
    # q.children.append(('price',123))
    
    #######################################
    
    # ret = self.model.objects.filter(title__startswith='py')
    # ret = self.model.objects.filter(price__in=[123, 111, 21, 11])
    # ret = self.model.objects.filter(price__range=[10, 100])
    # ret = self.model.objects.filter(title__contains='y')
    # ret = self.model.objects.filter(title__contains='o')
    # ret = self.model.objects.filter(title__icontains='o')
    # print(ret)
    # return HttpResponse('ok')
    
    #######################################
    
    # def foo():
    #     print('ok')
    #
    # print(foo.__name__)
    # print(type(foo.__name__))
    # foo.desc = '123'
    # print(foo.desc)
    # a = foo()
    # a.desc = 12
    # print(a.desc)
    
    #######################################
    
    # class A():
    
    # str = "http://127.0.0.1:8000/stark/app01/book/?publish=1&author=5"
    
    #######################################
    # class A(object):
    #     pass
    # 
    # class B(A):
    #     pass
    # 
    # b = B()
    # print(isinstance(b,A)) # True
    # print(isinstance(b,B)) # True
    
    test.py
     
     

    3、目录结构

    最后就是这个组件是想要做一个CRM的管理系统,所以在想怎么对表进行操作,怎么进行个性化的自定制等等,这个组件可以服务任何的Django项目,是一个

    可插拔式的组件,只需要在项目中粘贴过去并且在settings中配置好就可以使用了,可用性还是非常的高。

     
  • 相关阅读:
    APP测试之找密码
    测试理论
    LR性能测试
    Linux 操作系统常用命令
    C#后台HttpWebRequest代码调用WebService
    Python3在Windows下安装虚拟环境
    oracle使用rownum进行分页查询
    oracle over结合row_number分区进行数据去重处理
    Oracle实现主键自动增长
    Asp.net WebApi调用
  • 原文地址:https://www.cnblogs.com/geogre123/p/9790750.html
Copyright © 2011-2022 走看看