zoukankan      html  css  js  c++  java
  • 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
    

      

  • 相关阅读:
    PythonのTkinter基本原理
    使用 Word (VBA) 分割长图到多页
    如何使用 Shebang Line (Python 虚拟环境)
    将常用的 VBScript 脚本放到任务栏 (Pin VBScript to Taskbar)
    关于 VBScript 中的 CreateObject
    Windows Scripting Host (WSH) 是什么?
    Component Object Model (COM) 是什么?
    IOS 打开中文 html 文件,显示乱码的问题
    科技发展时间线(Technology Timeline)
    列置换密码
  • 原文地址:https://www.cnblogs.com/golangav/p/7566864.html
Copyright © 2011-2022 走看看