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中配置好就可以使用了,可用性还是非常的高。

 

 

转载于:https://www.cnblogs.com/geogre123/p/9790750.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值