知识点
一、stark所涉及的类:
ChangeList:封装列表页面需要的所有数据
StarkConfig:生成URL和视图对应关系,默认配置
AdminSite:保存数据库类和处理该类的对象的对应关系,路由分发
_registry={}
二、知识点:
inclusion_tag
QueryDict中的urlencode,urllib.parse.urlencode,QueryDict对象默认不可修改,需将_mutable=True
_meta获取app名称和类名(数据库中的表名),_meta.app_label,_meta.model_name
深浅拷贝
生成器
路由分发
- include
- ([],appname,namespace)
辨别函数与方法
Q对象的使用,构造复杂的查询条件
反射
- 获取models的QuerySet数据
- 下拉框中的批量操作
面向对象继承
- app下stark文件中继承StarkConfig,注意self到底是谁
反向生成URL
reverse(“namespace:xxx”)
分页和搜索保留搜索条件
ModelForm组件
动态创建类
name='Foo' country='cn' detail=lambda self,x:x+1 #在py中,类默认都是通过type来创建 cls=type(name,(object,),{'country':'cn','detail':lambda self,x:x+1}) obj=cls()
functools
- wraps(),保留原函数的元信息(函数名/函数注释等)
- partial 偏函数为函数默认传参
钩子函数预留可扩展位置
request.GET
- QueryDict对象操作
params=request.GET.copy() params._mutable=True params['k1']='v1' params.setlist('k2',[11,22,33])
- get()
- getlist()
- _mutable=True
- copy()
- urlencode()
mark_safe
单例模式
- 多个实例对象中共享数据
多例模式
- 实例中不共享数据
获取函数名称
__name__
autodiscover_module
函数手动模拟装饰器
self.request=request
order_by排序
三、可迭代对象
三、封装的应用
三、获取FK或M2M对应的数据,rel,remote_field
不同的django版本获取方式可能不一样,没有rel方法就用remote_field方法