{"id":13625496,"url":"https://github.com/TaleLin/lin-cms-flask","last_synced_at":"2025-04-16T06:32:50.255Z","repository":{"id":38375837,"uuid":"165864588","full_name":"TaleLin/lin-cms-flask","owner":"TaleLin","description":"🎀A simple and practical CMS implememted by Flask","archived":false,"fork":false,"pushed_at":"2023-07-04T07:11:28.000Z","size":532,"stargazers_count":816,"open_issues_count":13,"forks_count":214,"subscribers_count":30,"default_branch":"master","last_synced_at":"2024-04-26T03:22:59.088Z","etag":null,"topics":["cms","flask","flask-cms","lin","lin-cms","python-cms"],"latest_commit_sha":null,"homepage":"http://doc.cms.talelin.com/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TaleLin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2019-01-15T14:25:50.000Z","updated_at":"2024-04-25T16:05:47.000Z","dependencies_parsed_at":"2024-01-14T07:18:36.143Z","dependency_job_id":null,"html_url":"https://github.com/TaleLin/lin-cms-flask","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TaleLin%2Flin-cms-flask","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TaleLin%2Flin-cms-flask/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TaleLin%2Flin-cms-flask/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TaleLin%2Flin-cms-flask/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TaleLin","download_url":"https://codeload.github.com/TaleLin/lin-cms-flask/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223700531,"owners_count":17188339,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cms","flask","flask-cms","lin","lin-cms","python-cms"],"created_at":"2024-08-01T21:01:56.822Z","updated_at":"2024-11-08T14:31:37.431Z","avatar_url":"https://github.com/TaleLin.png","language":"Python","readme":"\u003c!-- # Lin-CMS-Flask --\u003e\n\n\u003ch1 align=\"center\"\u003e\n  \u003ca href=\"https://doc.cms.talelin.com/\"\u003e\n  \u003cimg src=\"https://doc.cms.talelin.com/left-logo.png\" width=\"250\"/\u003e\u003c/a\u003e\n  \u003cbr\u003e\n  Lin-CMS-Flask\n\u003c/h1\u003e\n\n\u003ch4 align=\"center\"\u003e一个简单易用的CMS后端项目 | \u003ca href=\"https://doc.cms.talelin.com/\" target=\"_blank\"\u003eLin-CMS-Flask\u003c/a\u003e\u003c/h4\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"http://Flask.pocoo.org/docs/2.0/\" rel=\"nofollow\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Flask-2.0.3-green.svg\" alt=\"Flask version\" data-canonical-src=\"https://img.shields.io/badge/Flask-2.0.3-green.svg\" style=\"max-width:100%;\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://www.python.org/\" rel=\"nofollow\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/python-\u003c=3.10-red.svg\" alt=\"Flask version\" data-canonical-src=\"https://img.shields.io/badge/python-\u003c=3.10-red.svg\" style=\"max-width:100%;\"\u003e\n    \u003c/a\u003e\n      \u003ca href=\"https://doc.cms.talelin.com/\" rel=\"nofollow\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-MIT-skyblue.svg\" alt=\"LISENCE\" data-canonical-src=\"https://img.shields.io/badge/license-MIT-skyblue.svg\" style=\"max-width:100%;\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cblockquote align=\"center\"\u003e\n  \u003cem\u003eLin-CMS\u003c/em\u003e 是林间有风团队经过大量项目实践所提炼出的一套\u003cstrong\u003e内容管理系统框架\u003c/strong\u003e。\u003cbr\u003e\n Lin-CMS 可以有效的帮助开发者提高 CMS 的开发效率。\n\u003c/blockquote\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#简介\"\u003e简介\u003c/a\u003e\u0026nbsp;|\u0026nbsp;\u003ca href=\"https://doc.cms.talelin.com/start/flask/\"\u003e快速起步\u003c/a\u003e\u0026nbsp;\n\u003c/p\u003e\n\n## 简介\n\n### 什么是 Lin CMS？\n\nLin-CMS 是林间有风团队经过大量项目实践所提炼出的一套**内容管理系统框架**。Lin-CMS 可以有效的帮助开发者提高 CMS 的开发效率。\n\n本项目是 Lin CMS 后端的 Flask 实现，需要前端？请访问[前端仓库](https://github.com/TaleLin/lin-cms-vue)。\n\n### 线上 demo\n\n[http://face.cms.talelin.com/](http://face.cms.talelin.com/)\n\n### QQ 交流群\n\nQQ 群号：643205479\n\n\u003cimg class=\"QR-img\" width=\"258\" height=\"300\" src=\"http://i1.sleeve.talelin.com/qq-group.jpeg\"\u003e\n\n### 微信公众号\n\n微信搜索：林间有风\n\n\u003cimg class=\"QR-img\" src=\"http://i1.sleeve.talelin.com/wechat-account.jpeg\"\u003e\n\n### Lin CMS 的特点\n\nLin CMS 的构筑思想是有其自身特点的。\n\n#### Lin CMS 是一个前后端分离的 CMS 解决方案\n\n这意味着，Lin CMS 既提供后台的支撑，也有一套对应的前端系统，当然双端分离的好处不仅仅在于此。如果您心仪 Lin，却又因为技术栈的原因无法即可使用，没关系，我们也提供了更多的语言版本和框架的后端实现。为什么 Lin 要选择前后端分离的单页面架构呢？\n\n首先，传统的网站开发更多的是采用服务端渲染的方式，需用使用一种模板语言在服务端完成页面渲染：比如 JinJa2、Jade 等。\n服务端渲染的好处在于可以比较好的支持 SEO，但作为内部使用的 CMS 管理系统，SEO 并不重要。\n\n但一个不可忽视的事实是，服务器渲染的页面到底是由前端开发者来完成，还是由服务器开发者来完成？其实都不太合适。现在已经没有多少前端开发者是了解这些服务端模板语言的，而服务器开发者本身是不太擅长开发页面的。那还是分开吧，前端用最熟悉的 Vue 写 JS 和 CSS，而服务器只关注自己的 API 即可。\n\n其次，单页面应用程序的体验本身就要好于传统网站。\n\n#### 框架本身已内置了 CMS 常用的功能\n\nLin 已经内置了 CMS 中最为常见的需求：用户管理、权限管理、日志系统等。开发者只需要集中精力开发自己的 CMS 业务即可\n\n#### Lin CMS 本身也是一套开发规范\n\nLin CMS 除了内置常见的功能外，还提供了一套开发规范与工具类。换句话说，开发者无需再纠结如何验证参数？如何操作数据库？如何做全局的异常处理？API 的结构如何？前端结构应该如何组织？这些问题 Lin CMS 已经给出了解决方案。当然，如果您不喜欢 Lin 给出的架构，那么自己去实现自己的 CMS 架构也是可以的。但通常情况下，您确实无需再做出架构上的改动，Lin 可以满足绝大多数中小型的 CMS 需求。\n\n举例来说，每个 API 都需要校验客户端传递的参数。但校验的方法有很多种，不同的开发者会有不同的构筑方案。但 Lin 提供了一套验证机制，开发者无需再纠结如何校验参数，只需模仿 Lin 的校验方案去写自己的业务即可。\n\n还是基于这样的一个原则：Lin CMS 只需要开发者关注自己的业务开发，它已经内置了很多机制帮助开发者快速开发自己的业务。\n\n#### 基于插件的扩展\n\n任何优秀的框架都需要考虑到扩展。而 Lin 的扩展支持是通过插件的思想来设计的。当您需要新增一个功能时，您既可以直接在 Lin 的目录下编写代码，也可以将功能以插件的形式封装。比如，您开发了一个文章管理功能，您可以选择以插件的形式来发布，这样其他开发者通过安装您的插件就可以使用这个功能了。毫无疑问，以插件的形式封装功能将最大化代码的可复用性。您甚至可以把自己开发的插件发布，以提供给其他开发者使用。这种机制相当的棒。\n\n#### 前端组件库支持\n\nLin CMS 还将提供一套类似于 Vue Element 的前端组件库，以方便前端开发者快速开发。相比于 Vue Element 或 iView 等成熟的组件库，Lin 所提供的组件库将针对 Lin CMS 的整体设计风格、交互体验等作出大量的优化，使用 Lin CMS 的组件库将更容易开发出体验更好的 CMS 系统。当然，Lin CMS 本身不限制开发者选用任何的组件库，您完全可以根据自己的喜好/习惯/熟悉度，去选择任意的一个基于 Vue 的组件库，比如前面提到的 Vue Element 和 iView 等。您甚至可以混搭使用。当然，前提是这些组件库是基于 Vue 的。\n\n#### 完善的文档\n\n我们将提供尽可能完善的[文档](https://doc.cms.talelin.com)\n来帮助开发者使用 Lin CMS\n","funding_links":[],"categories":["后端项目","Python"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTaleLin%2Flin-cms-flask","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FTaleLin%2Flin-cms-flask","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTaleLin%2Flin-cms-flask/lists"}