crm项目-stark组件分析
############### stark组件 ################
""" 这个stark组件是非常神奇的 1,独立的一个组件
2,没有model
3,没有views """
############### stark组件 ################
""" stark组件站点类
这个是一个重点类,应该是研究这个组件的起点
做了几件事
1,模仿admin,利用了单例模式,
2,模仿admin,可以对每一个表进行注册
这一步参数就是模型类,视图类,传递过来,
3,模仿admin,可以做第一层的路由分发,利用了django自带的url模块
生成/app/model/,这种格式的url,这是启动程序就生成的, """
############### stark组件 ################
""" stark组件默认处理视图
这个非常重要,是核心 第一,返回列表页面,这是最为复杂的,
1,数据 2,表头 3,表内容 4,查询
5,过滤 6,action 7,分页 8,添加按钮
第二,添加页面
第三,编辑页面
第四,删除页面
这四个页面都保留了定制,可以自己指定模板 处理第二级的url,这才是拼接最终的url
"""
############### stark组件 ################
""" stark组件处理视图
1,每次处理视图都会校验权限,看是否有添加按钮,删除按钮,编辑按钮,
把这个封装起来,每一个视图类都继承这个权限类,
每一个视图类,都继承默认的视图,
所以这个地方用到了多继承的知识, 2,默认视图中每一个小的功能都封装成为一个函数,
在真正的处理视图类继承默认视图之后,重写这些函数,达到定制的功能, """
############### stark组件 ################
""" stark组件,option类
这个类用来处理筛选,
1,指定字段,这种一般就是一对多的字段,或者多对多的字段,
2,可以定制是否支持多选, """
############### stark组件 ################
""" 如何不用stark组件是如何开发的?
1,我需要研究一下博客项目,
然后博客项目和crm项目比较就知道如何开发了, 使用stark组件和使用admin组件开发后台有什么优势?
1,django 的 admin其本意是一个简易的数据生成工具,
主要用于项目初期阶段进行简单的数据管理,比较有局限性
如果业务复杂些,admin可能就没有办法实现了
最大的问题是很不灵活并且是难以定制。
包括页面定制
url扩展,页面扩展
菜单管理,权限管理, Django admin 一般是用来给超级管理员实现一些基础的增删查改的,
不建议给用户使用。但是目前项目中,有部分给用户使用的功能很类似 Django Admin 中的 ModelAdmin ,
也就是把 Model 中某 Field 列出来查看、修改、新增。
若是自己写 View 的话,比较重复,或者自行实现一个 ModelAdmin ?
还是通过定制 Django admin 的 template 来实现较好?
如果比较追求用户体验的话建议自己写, Django Admin 深度定制很麻烦,
自己写,不用自带的 admin ,开发前期可以用用。
给用户做是个巨坑,本来目的就是做个方便开发的后台原型,到后来你得 hack 很多东西,唯一的好处是吃透文档
如果给用户用,千万别用 admin ,现在我正在填坑,还被别人在身边墨迹。因为你写前端交互的 js 已经打了无数个 patch,一团乱糟糟的
问题是,我问到的每个人都持反对意见,他们认为 admin 只限于超级用户,很不灵活并且是难以定制。” —来自 Reddit 的 andybak 2,stark组件集成了bootstrap,更好的定制页面,
扩展url,扩展页面,
所有的功能,菜单,页面,都能他通过stark组件来集成进来,
这才是真正的后台,使用admin就没有这么好扩展,定制, 二者都是这样,开发curd重复工作而且麻烦,所以两者都可以节省curd的时间,专注于业务实现, 对xadmin来说,可能你能读懂他的源代码后,会觉得,嗯,也是不错的 """
############### stark组件 ################
############### stark组件 ################
############### stark组件 ################
############### stark组件 ################
############### stark组件 ################
crm项目-stark组件分析的更多相关文章
- crm项目-stark组件
############### admin基本认识和常用的定制功能 ############### stark组件 对admin的基本认识 1,就是一个app,嵌入到了django里面,你可以 ...
- day 70 crm(7):stark组件调用,以及权限分配
前情提要: 复习: 1: orm !!!!! 2: session 3: django 4: 前端在复习 5: 复习中间件 学习的stark 的组件调用,以及权限的应用 一:权限的概念, 1: ...
- crm 使用stark组件
# Create your models here. from django.db import models class Department(models.Model): "" ...
- day67 crm(4) stark组件的增删改 以及 model_from使用和from组件回顾
前情提要:Django stark 组件开发的 增删改, model_form组件的使用 form组件的回顾 一:list_display_link 创建 功能描述: 使包含的字段能 ...
- crm项目-权限组件
############### 表结构分析 ################ """ 表结构设计: 1,四张表 用户表,userinfo,这个表本身不会被创 ...
- CRM项目之stark组件
. stark也是一个app(用startapp stark创建),目标时把这个做成一个可以拔插的组件 . setting文件下INSTALLED_APPS 路径要配置好(app的注册) . 写好si ...
- CRM项目之stark组件(2)
那么从今天开始呢,我们就要开始设计属于我们自己的admin组件,起个名字就叫stark吧(当然你愿意叫什么都可以). stark组件之四步走 仿照admin组件实现流程,stark组件要实现四件事情: ...
- CRM系统之stark组件流程分析
CRM系统主要通过自定义stark组件来实现的(参照admin系统自定义): STARK组件: 1 admin组件 1 如何使用admin 2 admin源码 3 创建自己的admin组件:stark ...
- crm项目之stark组件前戏(二)
stark组件的设计主要来源于django中admin的功能,在django admin中只需要将模型表进行注册,就可以在页面对该表进行curd的动作,那么django admin是如何做的呢? 在d ...
随机推荐
- POJ 2039:To and Fro
To and Fro Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 8632 Accepted: 5797 Descri ...
- 18 12 07 MySQL 与python 的交互
---恢复内容开始--- python 中 关于SQL语句的查询 from pymysql import * # 由于只能用了一个MySQL 的包所以全部引进 def main(): # 创建Conn ...
- GoF 23种设计模式概述
本文的结构: 一.设计模式总览 二.创建型设计模式 Creational Patterns 三.结构型设计模式 Structural Patterns 四.行为型设计模式 Behavioral Pat ...
- 题解 P4781 【【模板】拉格朗日插值】
题目 本蒟蒻看到一道数学题,就顺手切了.感觉单单对这一题而言,部分评论区的大佬过于复杂了 [分析] 先讲讲拉格朗日插值法: 对于给定的 \((n+1)\) 个点,我们可以确定唯一的一个 至多\(n\) ...
- UML-GRASP前5种模式
1.创建者(Creator) 问题:谁创建类A? 答:来自领域模型.设计模型(交互图.类图) 2.信息专家 问题:给对象分配职责的基本原则是什么? 回答:谁具有完成该职责的信息,谁负责该职责. 因为根 ...
- NFS工作原理简述
1.首先用户访问网站程序,由程序在NFS客户端发出存取NFS文件的请求,NFS客户端上的RPC服务通过网络向NFS服务器的RPC服务的111端口发出NFS文件存取的询问请求. 2.NFS服务器的RPC ...
- h5与安卓、ios交互
1.安卓交互 h5调用安卓方法 window.webview.xxx() 安卓调用h5方法, 方法需要在全局注册 window['showUnreadMsg'] = () => { this.$ ...
- Python说文解字_继承过程中的参数集合
1. 先看一段属性继承的代码: class User: def __init__(self,name,age): self.name = name self.age = age class User1 ...
- i++ 和 ++i 的区别和实现
++i 和 i++ ++i 和 i++ 的区别 1)i++ 返回的是 i 的值,++i 返回的是 i+1 的值 2)i++ 不能用作左值,++i 可以用作左值 左值和右值的区别是什么? 根本区别是:能 ...
- UML-迭代1-基础
1.原则 1).拆分成多个按时间定量.风险驱动的迭代(细化1.细化2.细化3.细化4) 2).在多个迭代中,对同一用例增量开发. 2.最佳实践 设计人员:对架构的核心和风险做适当设计.实现和测试 研发 ...