先将model类注册到_regitry={} 循环生成url
程序启动 会自动执行app中apps.py和admin.py(apps.py先执行)
1. 创建项目和app
settings.py 和 urls.py注释 django自有的
python3 manage.py startapp app02
python3 manage.py startapp app03
python3 manage.py startapp yingun
2. model类注册
app01 和 app02 创建类 并注册
python3 manage.py makemigrations
python3 manage.py migrate
1. 在yungun中app.py自动注册yg.py(这样其余app中的yg.py会在程序开始运行)
2. 在yungun中创建service/v1.py 实现注册类的功能
3. app01中models.py中创建表
4. app01中yg.py注册类
5. yungun中service/v1.py 生成:
{
UserInfo类 : BaseYinGunAdmin(UserInfo类,YinGunSite对象)
Role类 : BaseYinGunAdmin(Role类,YinGunSite对象)
}
6. app02中models.py中创建表 和注册类
4. 循环生成URL
include 如果参数是模块路径?导入模块,找打urlpatterns对象的列表
5. 反向生成URL 注意namespace
6. 表格显示表头
- 可以显示中文
7. 增加功能
- 获取 /yg/app01/userinfo/add/
- add_url = reverse("{2}:{0}_{1}_add".format(self.app_lable,self.model_name,self.site.namespace))
- 拼接 /yg/app01/userinfo/add/?page=1&name=alex&id=666
- Base_url = add_url + "?" + request.GET.urlencode()
- 解决后面的参数不重复
- /yg/app01/userinfo/add/?_changelistfilter=page%3D1%26id%3D666%26name%3Dfangshaowei
from django.http.request import QueryDict # request.GET 是 QueryDict 的对象
param_dict = QueryDict(mutable=True) #创建QueryDict对象, 加上mutable=True参数后,可以修改内部元素
param_dict['_changelistfilter'] = request.GET.urlencode()
base_add_url = reverse("{2}:{0}_{1}_add".format(self.app_lable,self.model_name,self.site.namespace))
add_url = "{0}?{1}".format(base_add_url,param_dict.urlencode())
- 利用 MyModelForm() 增加数据
8. 编辑功能
9. 分页
- 保留url中搜索条件
10. 动作
11. 组合搜索
############# curd #############
具体功能
1. 参考Django的admin 开发自定义组件 (admin 功能不全)
定义插件终极目标:
- 适用于所有web框架的CURD插件:
Django[orm]
tornado[SQLAchemy]
flask[SQLAchemy]
bottle[SQLAchemy]
什么是ORM框架:
- 关系对象影射,告别原生SQL,基于类和对象操作数据
类 -> 表
对象 -> 行
属性 -> 列
为什么使用ORM框架?
优点
- 不写SQL语句,快速开发
缺点
- 性能低
2. 启动文件:
AppConfig:
def ready()
xxxxx
3. URL:
include本质:[url列表] appname namespace
PS: namespace
4. 单例模式:
文件
get_instance()
__new__
PS: metaclass
5. site:
registry = {
UserInfo: Base(site,UserInfo)
Role: Sun(site,UserInfo)
}
循环进行URL注册
6. 字段
根据类:
获取app名称
获取表名称
获取字段:
字段对象 = UserInfo._meta.get_field('user')
字段对象.model
字段对象.rel.model
7. 反向生成URL
8. request.GET
- 默认不可修改
- {k:[1,2,3]}
9. ModelForm
- 基本用法
- type创建类
10. 面向对象
class:
__init__
self.namespace
xxxxx
class:
__iter__
11. popup
12 simple_tag,inclusion_tags
13. 功能:
列表页面:
列表定制列: 列名,函数
Action: 函数
组合搜索: 列名,函数
添加页面:
ModelForm
编辑页面:
ModelForm
删除页面:
查看详细:
PS: 保留原来URL