• curd 插件


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

      

  • 相关阅读:
    密码等级
    ie兼容透明
    分割线
    支付宝银行判断接口
    date只能选择今天之后的时间js
    离开页面之前提示,关闭,刷新等
    使用 Linux 系统的常用命令
    C#窗体简单增删改查
    1
    二维数组
  • 原文地址:https://www.cnblogs.com/golangav/p/7566864.html
Copyright © 2020-2023  润新知