先将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