45-课堂的老师的txt笔记

day27

s17day27
    - 自己写点【】
    - 开发规划
    - 计划:
        - 立项
        - 业务
            - 数据库设计
            - 登录
                - cookies
                - session
                - Form验证
            - 列表
                - 数据ORM操作
    
内容回顾:
    1. 权限(rbac)
        - 基于用户权限管理
        - 基于角色权限管理
    
    2. 4个类6张表
    
        用户
        角色
        权限
            - 含正则的URL
            - code,控制是否出现添加、删除、编辑按钮
            - is_menu,
        权限菜单组
        
    3. session
    
    4. 中间件
    
    5. inclusion_tag
            
    
今日内容概要:
    1. 权限【修Bug】
        - 删除和编辑时,左侧菜单无法默认展开
        - 控制页面是否显示【添加】【编辑】【删除】
        
    2. 自定义CURD插件 
        - django admin,解决基本CURD
            参考博客: http://www.cnblogs.com/wupeiqi/articles/7444717.html
            
            admin.site.register(models.UserInfo)
            URL:
                /admin/app01/userinfo/                       
                /admin/app01/userinfo/add/
                /admin/app01/userinfo/1/change/
                /admin/app01/userinfo/1/delete/
                
            admin.site.register(models.UserType)
            URL:
                /admin/app01/usertype/
                /admin/app01/usertype/add/
                /admin/app01/usertype/1/change/
                /admin/app01/usertype/1/delete/
            
            
            结论:
                先注册类
                循环注册的所有的类,每个类创建4个url
                
                
                    /admin/app01/userinfo/                obj1.changelist_view
                    /admin/app01/userinfo/add/            obj1.add_view
                    /admin/app01/userinfo/(\d+)/delete/   obj1.delete_view
                    /admin/app01/userinfo/(\d+)/change/   obj1.change_view
                                                          self.model=models.UserInfo
                                                          
                    /admin/app01/usertype/                obj2.changelist_view
                    /admin/app01/usertype/add/            obj2.add_view
                    /admin/app01/usertype/(\d+)/delete/   obj2.delete_view
                    /admin/app01/usertype/(\d+)/change/   obj2.change_view
                                                          self.model=models.UserType
                
            
                自定义功能:
                
                    from django.contrib import admin
                    from django.contrib.admin import ModelAdmin
                    from . import models
                    from django.shortcuts import HttpResponse

                    class UserInfoModelAdmin(ModelAdmin):
                        def changelist_view(self, request, *args,**kwargs):
                            return HttpResponse('用户列表')
                    admin.site.register(models.UserInfo,UserInfoModelAdmin)
                    
            29个功能
            
            
            重要原理:
                - admin原理(自定义)
                - admin使用
                
                
                
                
                
        - 自定义
            Django Admin:根据配置文件的修改,完成CURD定制任务
                  自定义: 根据配置文件的修改,完成CURD定制任务
            
            
        - 知识点:
            1. 启动文件执行顺序
               制作启动文件 
                    - 创建app
                    - 找到app.py
                            def ready(self):
                                from django.utils.module_loading import autodiscover_modules
                                autodiscover_modules('arya')
                    - settings.py
                        INSTALLED_APPS = [
                            ...
                            'arya.apps.AryaConfig',   # 不要写'arya'这种方式注册
                            ....
                        ]
                
                自动去所有的app中找 arya.py 执行 
        
        
            2. 单例模式(基于Python文件导入特性)
            
            
            3. 你真的了解include吗?



            顺序:先register,然后在urls=================
        
                
        
            目标:
                - 类:4个URL
                    - 制作启动文件,每个app的arya.py 
                        site._registry = {
                            app01.UserInfo: UserInfoConfig对象1(UserInfo) =>【self.changelist_view(self,),self.add_view,self.change_view,self.delete_view】
                            app01.UserType: AryaConfig对象2(UserType)     =>【self.changelist_view(self,),self.add_view,self.change_view,self.delete_view】
                            app02.Server:   AryaConfig对象3(Server)      =>【self.changelist_view(self,),self.add_view,self.change_view,self.delete_view】
                        }
                        以后,让UserInfo的所有操作交给AryaConfig对象来处理
                    
                    - urls.py
                        url(r'^arya/', (v1.site.urls,None,None)),
                        
                        for model_class,ary_config_obj in self._registry.items():
                            UserInfo             ary_config_obj.url
                                - 列表            ary_config_obj.changelist_view
                                - 添加             ary_config_obj.add_view
                                - 删除              ary_config_obj.delete_view
                                - 修改            ary_config_obj.change_view
                        
                    
        
        
    3. 权限 + 自定admin + crm业务
    

本周任务:
    1. 自己手动去写CURD,初级开发者【*】
    
    
    2. 权限管理【**】【注释】
    
    3. arya插件【注释】
        - 启动文件 
        - 生成URL
        - list_display显示页面(继承)
        
        
        PS: yield,面向对象封装,__iter__
        
    4. 权限和arya插件整合在一起
    
    5. Django Admin 

 

posted @ 2017-11-25 12:18  番茄土豆西红柿  阅读(163)  评论(0)    收藏  举报
TOP