您的位置:首页 > 编程语言 > Go语言

基于Django和rest framework的后台框架lucommon(一)

2016-11-20 21:31 429 查看
lucommon介绍:

lucommon快速入门

lucommon架构分析

lucommon用户手册

前言

设计理念

背景

快速入门

安装

演示

架构

基本功能

前言

感谢陆金所,感谢两位老大奇哥和冠群,感谢测试架构组所有成员。时间不长,但一定是工作以来,技术上产出和效率最高的半年。先后负责质量管理中心,用户管理工具和团队协作流程管理平台的设计和开发。lucommon起源于项目质量管理中心,慢慢演化和抽象出来的一个基于Django和Rest Framework的二次封装后台框架。随后,应用在测试架构组的其他核心平台,如环境部署管理平台,资源管理平台等。lucommon的需求,来自各大工具平台。

lucommon不包括任何项目相关的代码,是一个通用的小型框架,这也是lucommon设计目的之一。基于公司版lucommon的基础上,在家又给lucommon新增了不少功能:如权限控制,历史记录,增强型SQL注入类似Atlassian公司的JQL高级搜索等。后续lucommon会在github上继续开发和演化,真心希望能够服务更多的利用Django在做开发的小伙伴。

设计理念

lucommon:

"Write less, Do more"

背景

利用Django进行前后端的开发已经相当便利和简单,MVT模式让开发者更加关注自己的业务逻辑处理,代码结构规范,便于阅读和维护。

不少公司,开发比较大的项目,常采用前后端分离:后端提供数据,如何渲染数据全权交由前端负责。由传统的轻Client重Server到重Client轻Server的转化,将数据的分析提供和数据的显示分离。如同一套接口,网站(web),移动(IOS, Android)调用做出不同的UI,对于前后端开发人员,职责更清晰。

lucommon来源于质量管理中心的后台,而质量管理中心,收集多种平台数据源,呈现和显示数据。技术架构上,我们采用前后端分离,在后台的开发过程中,慢慢诞生出了一个通用的小型框架lucommon。lucommon设计出发点:

基于模型,能自动生成基础的CRUD接口代码:减少重复代码的堆积,提高代码质量,加快开发效率,规范代码编写

提供实用,通用的模块,如日志,接口文档,错误处理,历史记录,权限控制等,不同的项目复用

Django优秀模块集装箱,减少应用层配置,减少学习成本,拿来即用

lucommon基于Django和rest framework进行二次封装,而且充分利用python里很多优质的模块,如django-filters, django-rest-swagger等。关于这些框架或者模块的介绍,请自行查阅相关文档,以便深入学习。lucommon作为切入点,如果你不想花太多精力去阅读各个优质模块的文档,想简单通过lucommon快速开发你的第一个应用,也是我们框架的一个目的。

快速入门

lucommon基于Django,需要对Django有基本了解。在开始lucommon开发之旅前,你至少需要知道如何利用Django快速创建一个项目,创建一个应用,知道如何编写一个model,知道配置数据库,并且给相应的model创建数据表(migrate或手动)。是的,如果你觉得这些都没问题,那么请继续往下看,lucommon会让你的应用开发快速高效。

lucommon是作为一个应用(app)嵌入到你的项目中

为了便于讲解,我们假设你已经创建了一个名字是qc的项目,项目里创建了一个名字叫jira的应用,jira应用里有两个模型(issue和bug),实际项目,请用实际项目,应用以及模型名!

集成lucommon

# 建议你采用virtualenv创建沙盒环境进行开发,避免python全局环境包冲突等问题
#
# 获取lucommon代码
>> git clone git@github.com:hjh188/lucommon.git

# 安装lucommon依赖
>> pip install -r lucommon/requirements.txt

# Ubuntu环境下,安装全局依赖
>> apt-get install libmysqlclient-dev libxml2-dev libxslt-dev python-dev

# 拷贝lucommon到项目,作为项目的一个应用
>> cp -r lucommon YOUR_PROJECT_DIR

# 配置项目,编辑项目配置文件settings.py, 在最后面新增下面一行
from lucommon import *

# 利用lucommon快速生成模型对应的代码,下面PROJECT_NAME,APP_NAME分别对应qc和jira
# 按照命令行提示进行操作,即可生成应用对应模型的CRUD代码
>> python manage.py lucreate --project-name=PROJECT_NAME --app-name=APP_NAME


演示

通过上面简单的步骤,lucommon已经帮你生成好了对应模型的CURD接口,接下来启动应用:

# 启动项目
>> python manage.py runserver 8000

访问应用接口,浏览器访问http://127.0.0.1:8000/qc/jira/bugs



这是rest framework生成的CRUD的页面,你可以通过页面,新增,删除,更新,获取相应模型记录。

到这里,没有写一行逻辑代码,利用lucommon已经能够对我们开发应用的模型进行CRUD调用了。非常简单快速。我会在后面的章节介绍lucommon的强大功能。在继续深入之前,先罗列下lucommon的基本功能,以及来一张lucommon的设计架构图,以便你对lucommon有个全局把握。这些对你深入学习lucommon非常重要。

lucommon架构



lucommon基本功能

全量/增量生成模型的CRUD接口代码

支持多种查询过滤,排序,分页,内容协商等

权限控制,登录控制,历史记录,SQL注入等

跨域支持,CSRF验证等

生成接口文档

基于rest framework的接口调试页面

缓存控制

日志管理,集中错误处理

接口规范

......
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息