当前位置: 首页 > 软件库 > Web应用开发 > Web框架 >

lin-cms-flask

授权协议 MIT License
开发语言 Python
所属分类 Web应用开发、 Web框架
软件类型 开源软件
地区 不详
投 递 者 方博
操作系统 跨平台
开源组织
适用人群 未知
 软件概览


Lin-CMS-Flask

一个简单易用的CMS后端项目 | Lin-CMS-Flask

Lin-CMS 是林间有风团队经过大量项目实践所提炼出的一套 内容管理系统框架
Lin-CMS 可以有效的帮助开发者提高 CMS 的开发效率。

简介 | 快速开始 | 下个版本开发计划

简介

什么是 Lin CMS?

Lin-CMS 是林间有风团队经过大量项目实践所提炼出的一套内容管理系统框架。Lin-CMS 可以有效的帮助开发者提高 CMS 的开发效率。

本项目是 Lin CMS 后端的 Flask 实现,需要前端?请访问前端仓库

当前最新版本

lin-cms-flask(当前示例工程):0.3.1

lin-cms(核心库) :0.3.1

文档地址

https://doc.cms.talelin.com/start/flask/

线上 demo

http://face.cms.talelin.com/

QQ 交流群

QQ 群号:643205479

微信公众号

微信搜索:林间有风

Lin CMS 的特点

Lin CMS 的构筑思想是有其自身特点的。下面我们阐述一些 Lin 的主要特点。

Lin CMS 是一个前后端分离的 CMS 解决方案

这意味着,Lin 既提供后台的支撑,也有一套对应的前端系统,当然双端分离的好处不仅仅在于此,我们会在后续提供Java版本的 Lin。如果您心仪 Lin,却又因为技术栈的原因无法即可使用,没关系,我们会在后续提供更多的语言版本。为什么 Lin 要选择前后端分离的单页面架构呢?

首先,传统的网站开发更多的是采用服务端渲染的方式,需用使用一种模板语言在服务端完成页面渲染:比如 JinJa2、Jade 等。服务端渲染的好处在于可以比较好的支持 SEO,但作为内部使用的 CMS 管理系统,SEO 并不重要。

但一个不可忽视的事实是,服务器渲染的页面到底是由前端开发者来完成,还是由服务器开发者来完成?其实都不太合适。现在已经没有多少前端开发者是了解这些服务端模板语言的,而服务器开发者本身是不太擅长开发页面的。那还是分开吧,前端用最熟悉的 Vue 写 JS 和 CSS,而服务器只关注自己的 API 即可。

其次,单页面应用程序的体验本身就要好于传统网站。

框架本身已内置了 CMS 常用的功能

Lin 已经内置了 CMS 中最为常见的需求:用户管理、权限管理、日志系统等。开发者只需要集中精力开发自己的 CMS 业务即可

Lin CMS 本身也是一套开发规范

Lin CMS 除了内置常见的功能外,还提供了一套开发规范与工具类。换句话说,开发者无需再纠结如何验证参数?如何操作数据库?如何做全局的异常处理?API 的结构如何?前端结构应该如何组织?这些问题 Lin CMS 已经给出了解决方案。当然,如果您不喜欢 Lin 给出的架构,那么自己去实现自己的 CMS 架构也是可以的。但通常情况下,您确实无需再做出架构上的改动,Lin 可以满足绝大多数中小型的 CMS 需求。

举例来说,每个 API 都需要校验客户端传递的参数。但校验的方法有很多种,不同的开发者会有不同的构筑方案。但 Lin 提供了一套验证机制,开发者无需再纠结如何校验参数,只需模仿 Lin 的校验方案去写自己的业务即可。

还是基于这样的一个原则:Lin CMS 只需要开发者关注自己的业务开发,它已经内置了很多机制帮助开发者快速开发自己的业务。

基于插件的扩展

任何优秀的框架都需要考虑到扩展。而 Lin 的扩展支持是通过插件的思想来设计的。当您需要新增一个功能时,您既可以直接在 Lin 的目录下编写代码,也可以将功能以插件的形式封装。比如,您开发了一个文章管理功能,您可以选择以插件的形式来发布,这样其他开发者通过安装您的插件就可以使用这个功能了。毫无疑问,以插件的形式封装功能将最大化代码的可复用性。您甚至可以把自己开发的插件发布,以提供给其他开发者使用。这种机制相当的棒。

前端组件库支持

Lin 还将提供一套类似于 Vue Element 的前端组件库,以方便前端开发者快速开发。相比于 Vue Element 或 iView 等成熟的组件库,Lin 所提供的组件库将针对 Lin CMS 的整体设计风格、交互体验等作出大量的优化,使用 Lin 的组件库将更容易开发出体验更好的 CMS 系统。当然,Lin 本身不限制开发者选用任何的组件库,您完全可以根据自己的喜好/习惯/熟悉度,去选择任意的一个基于 Vue 的组件库,比如前面提到的 Vue Element 和 iView 等。您甚至可以混搭使用。当然,前提是这些组件库是基于 Vue 的。

完善的文档

我们将提供详尽的文档来帮助开发者使用 Lin

所需基础

由于 Lin 采用的是前后端分离的架构,所以您至少需要熟悉 Python 和 Vue。

Lin 的服务端框架是基于 Python Flask 的,所以如果您比较熟悉 Flask 的开发模式,那将可以更好的使用 Lin。但如果您并不熟悉 Flask,我们认为也没有太大的关系,因为 Lin 本身已经提供了一套完整的开发机制,您只需要在 Lin 的框架下用 Python 来编写自己的业务代码即可。照葫芦画瓢应该就是这种感觉。

但前端不同,前端还是需要开发者比较熟悉 Vue 的。但我想以 Vue 在国内的普及程度,绝大多数的开发者是没有问题的。这也正是我们选择 Vue 作为前端框架的原因。如果您喜欢 React Or Angular,那么加入我们,为 Lin 开发一个对应的版本吧。

快速开始

Server 端必备环境

  • 安装Python环境(version: 3.6+)

获取工程项目

打开您的命令行工具(terminal),在其中键入:

git clone https://github.com/TaleLin/lin-cms-flask.git starter

Tips:

我们以 starter 作为工程名,当然您也可以以任意您喜爱的名字作为工程名。

如果您想以某个版本,如0.0.1版,作为起始项目,那么请在 github 上的版本页下载相应的版本即可。

安装依赖包

进入项目目录,调用环境中的 pip 来安装依赖包:

pip install -r requirements-${env}.txt

数据库配置

默认使用 Sqlite3

Lin 默认启用 Sqlite3 数据库,打开项目根目录下的.env 文件(我们提供了开发环境的.development.env和生产环境的.production.env),配置其SQLALCHEMY_DATABASE_URI

Tips: 下面我们用{env}指代配置对应的环境

# 数据库配置示例
    SQLALCHEMY_DATABASE_URI='sqlite:///relative/path/to/file.db'

    or

    SQLALCHEMY_DATABASE_URI='sqlite:////absolute/path/to/file.db'

这将在项目的最外层目录生成名为lincms${env}.db的 Sqlite3 数据库文件。

使用 MySQL

Tips: 默认的依赖中不包含 Python 的 Mysql 库,如有需要,请自行在您的运行环境中安装它(如pymysqlcymysql等)。

Lin 需要您自己在 MySQL 中新建一个数据库,名字由您自己决定(例如lincms)。

创建数据库后,打开项目根目录下的.${env}.env文件,配置对应的SQLALCHEMY_DATABASE_URI

如下所示:

# 数据库配置示例: '数据库+驱动库://用户名:密码@主机:端口/数据库名'
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:123456@localhost:3306/lincms'

您所使用的数据库账号必须具有创建数据表的权限,否则 Lin 将无法为您自动创建数据表

初始化

如果您是第一次使用 Lin-CMS,需要初始化数据库。

请先进入项目根目录,然后执行flask db init,用来添加超级管理员 root(默认密码 123456), 以及新建其他必要的分组

Tips:如果您需要一些业务样例数据,可以执行脚本flask db fake添加它

运行

一切就绪后,再次从命令行中执行

flask run

如果一切顺利,您将在命令行中看到项目成功运行的信息。如果您没有修改代码,Lin 将默认在本地启动一个端口号为 5000 的端口用来监听请求。此时,我们访问http://localhost:5000,将看到一组字符:

“心上无垢,林间有风"

点击“心上无垢”,将跳转到Redoc页面;点击“林间有风”,跳转到Swagger页面。

这证明您已经成功的将服务运行起来了,Congratulations!

后续开发计划

  • 重构插件机制
  • 新增七牛上传插件
  • 扩展行为日志
  • 安装MySQL(version: 5.6+)yum install mysql 安装Python环境(version: 3.6+)yum install python3 打开你的命令行工具(terminal),在其中键入: git clone https://github.com/TaleLin/lin-cms-flask.git starter 此处我们以 starter 作为工程名,当然你也可

  • kamm - 一个简单的flask cms框架 安装使用 确保您安装了pipenv, 以及python解释器版本为3.6以上 # 创建python pipenv --three pipenv install # 在根目录下创建.env文件 填入db_url=${你的URL} # 如db_url='mysql+cymysql://root:root@localhost/kamm?charset=ut

  • O__O "… 虽然是几年前的问题啦。 我还是决定说一下。 Lin CMS 是一个前后端分离的 CMS 解决方案 这意味着,Lin 既提供后台的支撑,也有一套对应的前端系统,当然双端分离的好处不仅仅 在于此,Lin 目前已有 Python 和 Node.js 版本的实现。如果你心仪 Lin,却又因为技术栈的原因无法 即可使用,没关系,我们即将推出 Java 版本的 Lin。 为什么 Lin 要选择

  • 问题:Lin CMS flask db init 报错 RuntimeError: 'cryptography' package is required for sha256_password  原因:如提示所述缺少cryptography库 解决:pip install cryptography

 相关资料
  • Lin-CMS-Koa 一个简单易用的CMS后端项目 Lin-CMS 是林间有风团队经过大量项目实践所提炼出的一套 内容管理系统框架。 Lin-CMS 可以有效的帮助开发者提高 CMS 的开发效率。 简介 | 版本日志 简介 什么是 Lin CMS? Lin-CMS 是林间有风团队经过大量项目实践所提炼出的一套内容管理系统框架。Lin-CMS 可以有效的帮助开发者提高 CMS 的开发效率。 本项目

  • Lin-CMS-Koa-Core 一个简单易用的CMS后端项目 | Lin-CMS-Koa的核心库 Lin-CMS 是林间有风团队经过大量项目实践所提炼出的一套 内容管理系统框架。 Lin-CMS 可以有效的帮助开发者提高 CMS 的开发效率。 简介 | 快速开始 | 下个版本开发计划 简介 什么是 Lin CMS? Lin-CMS 是林间有风团队经过大量项目实践所提炼出的一套内容管理系统框架。L

  • Lin UI 是由林间有风团队精心打造的一套微信小程序组件库,组件丰富、设计优美,并且拥有完整的商业案例,是您开发微信小程序的不二选择。 特点 现在市面上已经有了许多组件库:Vant Weapp、iView Weapp、Color UI、Wuss Weapp、Wux Weapp 等等等等,他们每一套也都能称得上是成熟的组件库。那我为什么还要使用 Lin UI 呢? Lin UI 吸引我的地方主要有

  • lin-view-ui 是一款基于 Vue.js 2.0 的前端 UI 组件库,主要集成了平时在开发中使用到的 UI 组件。 特性 基于 Vue 开发的 UI 组件 使用 npm + webpack + babel 的工作流,支持 ES2015 提供友好的 API,可灵活的使用组件 支持按需引入,减少项目打包体积 偏向于业务组件 提供完善的文档 安装 npm install lin-view-ui

  • 静态编程语言有一个很好的特性,称为字符串模板。 但是,是否可以在模板中包含任何格式?例如,我想在 kotlin 的字符串模板中设置 Double 的格式,至少在小数分隔符后设置一个数字:

  • RedKite CMS 是个内容管理系统,基于 Symfony2 和 Twitter-Bootstrap 框架建立的。它允许用户管理网站在线的内容,使用一个界面来提高用户的体验,所以用户不需要有专业的 web 编程知识,可以很轻松的使用这个 CMS。