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