有哪些python 开源博客系统+flask的搭建的博客或论坛开源推荐

值得看的Python的开源项目有哪些?
好的开源项目对大家学习会有很大帮助,希望大家推荐下适合Python学习的好的开源项目,尽量本身不是太庞大,而且结构清晰
Kenneth Reitz的作品值得一看。他就是requests的作者。
tornado, 代码很简洁, 从低层的IO到模板处理都有, 有兴趣参考:
Pocoo 家出的都是精品,比如 , ,
。Flask 号称微框架,0.1的代码才700来行(其中大部分都是注释) 而且代码写得很规范,非常适合学习。Django为了做到功能完备代码必然庞大而复杂不建议单纯的阅读。
Tornado,不只是web/框架/server怎么实现,还有底层的异步/非阻塞/eventloop/epoll等等相关的概念,非常值得深入理解
推荐阅读我的专栏文章:。 我摘录一部分:我个人的喜好和工作中看别人代码差不多,基本每个人、每个项目、每个团队都有自己写代码的风格,比如变量命名风格、某些语言特性使用方式、代码规范要求、目录风格等,其实开源项目的作者也是一样。看代码,如看人(团队)。 首先介绍下我的喜好(排名分先后):1. 。requests和python-guide作者。他还有一个非常励志的故事,有兴趣的可以看 2. 。flask、Jinja2、werkzeug和flask-sqlalchemy作者。3. 。flake8、pycodestyle(原pep8)、requests、urllib3等项目的主要贡献者和维护者。4. 。Celery及相关依赖的作者。5. 。mongo-python-driver(pymongo)、tornado等项目的主要贡献者。6. 。fabric、paramiko(Python的ssh库)作者。前2个是公认的Python领域代码写的最好的、最有创意的工程师。初学者推荐阅读项目初学者可以先阅读一些代码量比较少的,最好是单文件的项目:1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 看代码主要是了解别人写代码的方式,语法实践这些内容。看完之后,你可以针对这些项目能解决的问题自己写个项目,写完之后和上述项目去对比一下,看看哪些方面做的不好。进阶阅读项目进阶的时候就要阅读一些相对复杂的项目,它们能帮助你提升Python编程技巧:1. 。使用Python实现一些设计模式的例子。2. 。flask的WSGI工具集。其中包含了实现非常好的LocalProxy、cached_property、import_string、find_modules、TypeConversionDict等。3. 。阅读一个Web框架对Web开发就会有更深刻的理解,flask太大,bottle就4k多行,当然如果你有毅力和兴趣直接看flask是最好了的。4. 。了解用Python实现数据库。5. 。了解ORM的实现。6. 。click已经内置于在flask 0.11里,提供命令行功能,值得阅读。7. 。了解一个flask插件是怎么实现的。除此之外Web开发者可以阅读一些相关的项目:1. 。使用flask,网站是。2. 。使用flask和psutils的获取Linux系统信息的面板应用。3. 。 flask官方网站应用。4. 。如果你使用pyramid,这个,可以帮助你理解很多。当然,2个学习flask重要的资源必须爆一爆:1. 。2. 。 这个就是《Flask Web开发:基于Python的Web应用开发实战》的原始博客。500lines推荐一个非常厉害的项目 , 它里面包含了22个由该领域的专家完成,用不到500行的代码实现一个特定功能的子项目。连Guido van Rossum都亲自来写基于asyncio爬虫了,Nick Coghlan、ajdavis也出场了。更具体的介绍可以看。
flask; requests (Python HTTP Requests for Humans)看看requests吧, github上排名很高。
先把标准库读一遍?
Olivier Grisel在github上的repos
我自己的感觉. 很多..当你用某个第三方库的时候. 遇到bug并且能够确定你的代码逻辑上没问题之后. 你就会去看哪个第三方库的源码了...
开源erp 也是装机最多的erp开源云osazure aws joyent gce之外的用的云os多是这个
已有帐号?
无法登录?
社交帐号登录如题, 我想用python+flask搭建一个博客,之前学习过一点这方面的知识,但最好的学习是模仿,各位有没有一些开源的推荐??
我的博客:是自己用Python Flask开发的,但我没开源就是了。
如果你是刚开始学习的话想找一些开源的系统,以下是一些推荐。&br&以下较为简单的项目&br&&a class=& wrap external& href=&///?target=https%3A///koon-kai/kiblog& target=&_blank& rel=&nofollow noreferrer&&1、GitHub - koon-kai/kiblog: It 's a
blog power by flask.&i class=&icon-external&&&/i&&/a&&br&&a class=& wrap external& href=&///?target=https%3A///proudlygeek/proudlygeek-blog& target=&_blank& rel=&nofollow noreferrer&&2、GitHub - proudlygeek/proudlygeek-blog: A simple blog powered by flask &i class=&icon-external&&&/i&&/a&&br&&a class=& wrap external& href=&///?target=https%3A///kkris/refer& target=&_blank& rel=&nofollow noreferrer&&3、GitHub - kkris/refer: a simple blog powered by flask and mongodb&i class=&icon-external&&&/i&&/a&&br&&a class=& wrap external& href=&///?target=https%3A///carpedm20/personal-blog-powered-by-flask& target=&_blank& rel=&nofollow noreferrer&&4、GitHub - carpedm20/personal-blog-powered-by-flask: website powered by flask&i class=&icon-external&&&/i&&/a&&br&&a class=& wrap external& href=&///?target=https%3A///rfyiamcool/markdown-blog& target=&_blank& rel=&nofollow noreferrer&&5、GitHub - rfyiamcool/markdown-blog: 使用python的flask框架结合markdown写了一个博客程序&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A//git.oschina.net/zhangdapeng89/flask_blog& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&6、zhangdapeng89/flask_blog&i class=&icon-external&&&/i&&/a&&br&如果你觉得以上较为简单,你可以接着看&br&&a class=& wrap external& href=&///?target=https%3A///xpleaf/Blog_mini& target=&_blank& rel=&nofollow noreferrer&&1、GitHub - xpleaf/Blog_mini: An Open Source Blog System that developed with Flask.&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=https%3A///huangyemin/pyblog& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&2、GitHub - huangyemin/pyblog: a blog developed with python&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=https%3A///deepgully& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&3、deepgully (gully) · GitHub&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A//git.oschina.net/wtx358/wtxlog& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&4、wtx358/wtxlog&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=https%3A///ghostrong/weblog& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&5、GitHub - ghostrong/weblog: A simple blog system written in Flask.&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=https%3A///sixu/flaskblog& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&6、GitHub - sixu/flaskblog: person blog powered by flask&i class=&icon-external&&&/i&&/a&&br&&br&AND&br&&a href=&///?target=http%3A//flask.pocoo.org/community/poweredby/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Powered By Flask&i class=&icon-external&&&/i&&/a&&br&&br&最后告诉你一个技巧&br&&img data-rawheight=&437& data-rawwidth=&1036& src=&/35dfcaaba82dcaf9fa4b7ae_b.png& class=&origin_image zh-lightbox-thumb& width=&1036& data-original=&/35dfcaaba82dcaf9fa4b7ae_r.png&&&img data-rawheight=&508& data-rawwidth=&1039& src=&/c683df04991a2fbb57ce0_b.png& class=&origin_image zh-lightbox-thumb& width=&1039& data-original=&/c683df04991a2fbb57ce0_r.png&&&img data-rawheight=&468& data-rawwidth=&715& src=&/9cc97a64dbf9d48cda5da47ce12a3400_b.png& class=&origin_image zh-lightbox-thumb& width=&715& data-original=&/9cc97a64dbf9d48cda5da47ce12a3400_r.png&&
如果你是刚开始学习的话想找一些开源的系统,以下是一些推荐。 以下较为简单的项目
知乎第一个赞,就再加点料吧:&br&现在博客已经有域名了:&a href=&///?target=http%3A//www.vlblog.tech/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Fly&i class=&icon-external&&&/i&&/a&&br&代码在此:&a href=&///?target=https%3A///ifwenvlook/blog.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/ifwenvlook/b&/span&&span class=&invisible&&log.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&包含登录、私信、通知、搜索、分类、热门排序等等,都是用最简单的方法实现的&br&下图是网站预览&br&&img src=&/ec91caf4d3c0aa0ac05a07db28ddce54_b.jpg& data-rawwidth=&1897& data-rawheight=&745& class=&origin_image zh-lightbox-thumb& width=&1897& data-original=&/ec91caf4d3c0aa0ac05a07db28ddce54_r.jpg&&
知乎第一个赞,就再加点料吧: 现在博客已经有域名了: 代码在此: 包含登录、私信、通知、搜索、分类、热门排序等等,都是用最简单的方法实现的 下图是网站预览
已有帐号?
无法登录?
社交帐号登录[每月好书]深入理解 Flask(Python主流Web开发框架 全流程实战 全面覆盖重要技术话题)_Python程序员-爱微帮
&& &&& [每月好书]深入理解 Flask(Pyt…
和老规矩一样,本月月考的奖品就是《深入理解 Flask》两本。不知道什么是月考的同学,请补习下面文章:另外,为了避免每次月考都是相同的同学获得最高奖,从上次月考开始,获得过最高奖(得到过书)的同学,将不能获得最高奖,也就是说一个人只能获得一次最高奖。规则就说到这里,下面是书籍介绍。------------------------------------割------------------------------------------------【美】Jack Stouffer(杰克·史都华) 著& &苏丹 译ISBN 978-7-121-29231-62016年7月出版定价:79.00元 256页16开编辑推荐Flask 是一种具有平缓学习曲线和庞大社区支持的微框架,利用它可以构建大规模的web应用。学习上手Flask非常轻松,但要深入理解却并不容易。本书从一个简单的Flask应用开始,通过解决若干实战中的问题,对一系列进阶的话题进行了探讨。书中使用MVC(模型-视图-控制器)架构对示例应用进行了转化重构,以演示如何正确地组织应用代码结构。有了可扩展性强的应用结构之后,接下来的章节使用Flask扩展为应用提供了额外的功能,包括用户登录和注册、NoSQL查询、REST API、一套后台管理界面,以及其他特性。然后,你会学到如何使用单元测试,保障代码持续按照正确的方式工作,避免极具风险的猜测式编程。本书还会讨论可用于部署Flask应用的诸多不同平台,以及你必须考虑的——每个平台的优劣利弊。你会从本书中学到:■ 搭建Python项目环境的优秀实践■ 使用SQLAlchemy,以编程式对数据库进行查询■ 在Jinja中开发页面模板■ 在Flask中搭建MVC环境■ 探索NoSQL,何时应该以及何时不应该使用,以及如何使用■ 开发你自己的Flask扩展■ 使用Celery创建异步任务■ 使用py.test编写单元测试内容提要Flask 是在Python 用户中最为流行的Web 开发框架。《深入理解 Flask》从一个简单的Flask 项目入手,由浅入深地探讨了一系列实战问题,包括如何使用SQLAlchemy 和Jinja 等工具进行Web 开发;如何正确地设计扩展性强的Flask 应用架构和搭建MVC 环境;对于各种NoSQL 数据库的特性,何时应该、何时不应该及如何使用它们;通过使用Flask 扩展快速实现用户的身份系统、RESTful API、NoSQL查询、后台管理等功能;如何创建自己的扩展;使用Celery 编写异步任务,使用pytest 进行单元测试等;最后介绍了如何部署上线,包括使用自己搭建的服务器或使用各种云服务,以及如何权衡和选择这些不同的解决方案。目录第1 章入门& 1使用 Git 进行版本控制 1安装Git& 1Git 基础 2使用pip 管理Python 包 4在Windows 上安装pip& 4在Mac OS X 和Linux 上安装Python 包管理器pip 5pip 基本操作 6用virtualenv 的沙盒管理依赖 7virtualenv 基础 7开始我们的项目 8使用Flask Script& 9总结 10第2 章使用 SQLAlchemy 创建数据模型11设置 SQLAlchemy11Python 安装包 12Flask SQLAlchemy 12我们的第1 个数据模型 13创建user 表 15CRUD 16新增数据 16读取数据 16修改数据 19删除数据 19数据模型之间的关联 20一对多 20多对多 23SQLAlchemy 会话对象的方便之处 25使用Alembic 进行数据库迁移 26总结 28第3 章通过模板创建视图& 29Jinja 的语法 29过滤器 30注释 34if 语句 34循环 35宏 36Flask 特有的变量和函数 37创建视图 38视图函数 38编写和继承模板 41Flask WTForms 45WTForms 基础 46自定义检验器 48发布评论 48总结 51第4 章使用蓝图创建控制器& 52请求的构建和销毁,以及全局变量 52错误页面 53使用类描述视图 53方法视图 55蓝图 55总结 57第5 章进阶的应用结构 58模块项目 58重构代码 59应用的工厂模式 62总结 64第6 章保护应用安全& 65准备工作 65修改用户模型 65创建表单 67创建视图 71社交网络登录 76使用会话 84使用Flask Login& 87用户角色 90总结 95第7 章在 Flask 中使用NoSQL 数据库 96NoSQL 数据库的种类 96键值数据库 97文档数据库 97列式数据库 98基于图的数据库 100关系型数据库与NoSQL 的比较 101关系型数据库的优势 102NoSQL 数据库的优势 103在什么情况下用什么数据库 104在Flask 中使用MongoDB 105安装MongoDB& 106配置MongoEngine 106定义文档 107CRUD& 112NoSQL 中的关联关系 117利用NoSQL 的强大能力 120总结 126第8 章构建 RESTful API 127REST 是什么 127构建RESTful Flask API 130GET 请求 131格式化输出 132请求中的参数 135POST 请求 138身份认证 140PUT 请求 143DELETE 请求 146总结 147第9 章使用 Celery 编写异步任务 148Celery 是什么 148配置Celery 和RabbitMQ 150在Celery 中创建任务 151运行Celery 任务 154Celery 工作流 155监控Celery& 160在Flower 中通过网页进行监控 161创建一个提醒应用 161生成每周摘要 163总结 167第10 章有用的 Flask 扩展 168Flask Script& 168Flask Debug Toolbar& 170Flask Cache& 173缓存函数和视图 174缓存带参数的函数 175缓存带有查询参数的路径 177使用Redis 作为缓存后端 177使用memcached 作为缓存后端 178Flask Assets 178Flask Admin& 181编写基础管理页面 182编写数据库管理页面 184增强文章管理功能 185编写文件系统管理页面 187保护Flask Admin 的安全 188Flask Mail 189总结 190第11 章构建你自己的扩展 192编写一个 YouTube Flask 扩展 192创建Python 包 196通过Flask 扩展修改响应数据 198总结 200第12 章测试 Flask 应用 201什么是单元测试 201怎样进行测试 202对应用进行单元测试 202测试路由函数 203用户界面测试 208测试覆盖率 213测试驱动的开发 216总结 218第13 章部署 Flask 应用 219部署在你自己的服务器上 219使用fabric 把代码推送到服务器 220使用supervisor 运行你的Web 服务器 222Gevent 224Tornado& 225Nginx 和uWSGI& 226Apache 和uWSGI 229部署在Heroku 上 230使用Heroku Postgres 231在Heroku 中使用Celery 232在AWS 上部署应用 233在Amazon Elastic Beanstalk 上使用Flask 233使用Amazon Relational Database Service& 235在Amazon Simple Queue Service 中使用Celery 236总结 237精彩节摘译者序最近才知道,Flask 在一开始竟然是作为愚人节玩笑诞生的,不过后来大受好评,并成为正式项目。我在最初接触Flask 的时候,它也只是作为颇具先锋气质的“单文件微框架”而在Python 世界被人们口口相传。但在很短的时间内,它在Python Web 开发者中开始流行起来,Flask 社区迅速壮大,为它开发的插件数量也呈爆发式增长。如今,Flask 在事实上已经成为轻量级Python Web 框架的代言人。不论是对于Python 初学者,还是对于有若干年经验的Python 老手,使用Flask 搭建新项目都是非常有吸引力的选择。不过即使再优秀的工具,仍然很容易被用错。作者在书中也反复强调了这一点。Flask提供的是一个最小化的Web 框架,在此基础上你可以方便地使用你最喜欢的方式,添加你最得心应手的工具,形成一个专属于你和你的项目的高度定制化的强大工具套装。它不会逼你自己造轮子,因为在社区里几乎应有尽有;它也不会逼你用它附赠的轮子,因为它根本就没有准备赠品。对老司机来说,这样的框架可以最大程度地解放战斗力;对初学者来说,又可以利用社区中大量现成的资源很快上手。这样大家便都开心了,毕竟写程序最重要的就是开心。但问题可能也隐藏在这里面:老手可能会根据自己以往熟悉的方式,把强大的战斗力释放在一些本来或许没有必要重复造轮子的地方;而新手则可能犯更多的错误:比如使用最原始的方式或者来自其他框架的方式搭建程序结构,结果当应用规模膨胀时面临困境;又或者引入了过多没必要引入的Flask 扩展,导致代码难以测试和维护,稳定性降低,甚至出现冲突。另一个潜在的问题是,庞大的社区带来的好处毋庸多言,但如果大量地使用非官方库,则意味着需要承担社区开发者的水平参差不齐所带来的风险。有个程序员朋友吐槽说好多Flask 扩展有个共同点,就是文档写得比代码棒。总的来说,如何正确地运用框架给予的高度自由,结合具体项目的需求,在用不用扩展和使用什么扩展之间做出最合理的选择,则是需要一定的经验的。而对于ORM、NoSQL、云服务等,同样存在用不用、用哪个、如何用的选择难题。在我看来,在面向业务的开发中,深入二字的含义并不是指黑科技和奇技淫巧,而是具有预见性的解决方案选择。基于对当下项目需求的准确认知,采用最适合当前情况的不多不少的架构设计,在避免提前优化的同时对未来做好充分准备,对测试部署等流程的意义的深刻理解,才是深入和进阶,也正是本书的重点所在。实际上本书超纲的地方有点多,探讨的问题已经远不止Flask 了。这是我翻译的第1 本书。翻译这件事果然是比较特别的体验,跟写作和编程都很不一样。翻译一整本书对于像我这样的拖延症患者来说,是个极大的挑战,因为即使每次翻译一大段,进度条也几乎没有移动的意思;但如果拖下去,它就绝对不会结束。拖到最后时刻然后突击解决的常规办法已经不奏效了,无论如何,经过漫长的修炼,终于还是完成了。感谢张春雨编辑邀请我翻译本书,感谢Cookie 对我不务正业的理解和支持,感谢公孙欠扁等朋友帮我解决一些英文问题。水平所限,翻译中必定存在问题,请读者见谅。我在豆瓣、Twitter、微博等处的ID 都是su27,读后若有困惑或批评意见,欢迎找我讨论、吐槽。祝每位读者都能从本书中获益。珍爱生命,我用 Python!苏丹2016 年6 月作者简介Jack Stouffer 是一名有数年Web 应用开发经验的程序员。他在两年前将自己所有的项目都切换到了Flask,目前在位于密歇根州奥本山的Apollo America 工作,使用Python、Flask 和JavaScript 编写企业内部的业务工具。Jack 是开源技术的信徒与支持者,他在GitHub 上发布以他所推荐的最佳实践原则编写的Flask 范例时,该范例立即成为线上最受欢迎的Flask 代码库。Jack 还曾经担任由Packt Publishing 出版的Flask FrameworkCookbook 一书的审稿人。译者苏丹,来自山城重庆,毕业于北京师范大学;现豆瓣资深开发工程师,主要开发作品有豆瓣FM等;有多年Python编程实践经验;曾参与《Learning Android中文版》一书翻译。 Jack Stouffer是一位有数年web应用开发经验的程序员。他在两年前将他所有的项目都切换到了Flask。他目前在位于密歇根州奥本山的Apollo America工作,使用Python、Flask和JavaScript编写企业内部业务工具。Jack是开源技术的信徒与支持者,在GitHub上发布以他所推荐的zui佳实践原则编写的Flask范例时,立即成为了线上受欢迎的Flask代码库。Jack还曾经担任Packt Publishing的《Flask Framework Cookbook》一书的审稿人。前言Flask 是一个基于Python 的Web 框架,它的设计目的是提供Web 开发所需要的最小功能子集。Flask 与别的框架(尤其是采用其他编程语言的框架)的不同之处在于:它没有绑定诸如数据库查询或者表单处理等功能库,以及它们所组成的整个生态系统。它倾向于对这些功能的实现方式不做任何限定。这种系统带来的主要好处是:开发者能够使用他们想用的任何方式和工具,去设计他们的应用架构。另外,对于一些常见的通用功能,Flask 没有以某种特定方式去实现,这意味着在Flask 中,对标准库的使用会比在其他框架里多得多,这保证了通用功能的稳定性及针对其他Python 程序员的可读性。由于Flask 社区十分庞大,所以该社区提供的添加通用功能的方式非常多。本书的重点之一,就是介绍扩展Flask 的方法,了解它们如何帮助我们避免重复造轮子。这些扩展的妙处在于,如果不需要那些额外的功能,就不用引入它们,这样我们的应用才会保持简洁、轻量。这种系统的主要弊端是,大部分新的Flask 用户不知道如何正确地规划大型应用的结构,最后弄出一大堆让人难以理解和维护的代码。所以本书的另一个重点是如何为Flask 应用创建模型/视图/控制器(MVC)架构。MVC 体系在最初被发明时,主要用来设计桌面应用的用户界面。它将数据处理(model)、交互逻辑(controller)和用户界面(view)隔离成三层不同的组件。这三层组件的隔离,使得程序员不用为每个网页重新实现一遍相同的功能,而是只要重用那些代码。比如,若是没有把处理数据的代码拆分到单独的函数中,那么我们不得不在每个页面的渲染函数里,把同样的数据库连接代码和SQL 查询代码都写一遍。本书中大量的调查研究资料及Web 应用开发中各种踩坑的第1 手痛苦经验,使得本书成为目前关于Flask 的最详尽、实用的资料。真诚地希望你会喜欢它。本书涵盖的内容第1 章,入门,帮助读者应用Python 项目的最佳实践方式,并搭建一个Flask 开发环境。读者会得到一个十分基础的Flask 应用框架,在整本书中都会用到。第 2 章,使用SQLAlchemy 创建数据模型,介绍如何把Python 的数据库工具SQLAlchemy与Flask 结合起来使用,为用户的数据库建立一套面向对象的编程接口。第 3 章,通过模板创建视图,讲解如何使用Flask 的模板系统Jinja,在SQLAlchemy模型的支持下动态地创建HTML 页面。第 4 章,使用蓝图创建控制器,介绍如何使用Flask 的蓝图(blueprint)功能来组织视图,同时避免代码冗余。第 5 章,进阶的应用结构,结合在以上4 章中学到的知识,详细讲解应该如何组织代码,以创建可维护性和可测试性都更好的应用结构。第 6 章,保护应用安全,讲解如何使用各种Flask 扩展,为每个视图添加基于权限的登录系统。第 7 章,在Flask 中使用NoSQL 数据库,讲解什么是NoSQL 数据库,以及在应用需要更强大的功能时,应该怎样将NoSQL 数据库与之整合。第 8 章,构建RESTful API,介绍如何通过一种安全和易用的方式,把应用数据库中的数据提供给第三方使用。第 9 章,使用Celery 创建异步任务,讲解如何把成本高或耗时长的任务挪到后台执行,让它们不拖慢应用。第 10 章,有用的Flask 扩展,讲解如何利用一些广受欢迎的扩展,让应用跑得更快、增加更多的功能,以及让调试变得方便、易行。第 11 章,构建你自己的扩展,了解Flask 扩展是如何工作的,以及怎样编写扩展。第12 章,测试Flask 应用,讲解如何通过在应用中增加单元测试和用户界面测试,以保障程序质量,减少错误代码的数量。第 13 章,部署Flask 应用,介绍如何把已经完成的应用从开发环境中拿出来,部署到线上服务器中。
点击展开全文
悄悄告诉你
更多同类文章
还可知道有多少人阅读过此篇文章哦
阅读原文和更多同类文章
可微信扫描右侧二维码关注后
还可知道有多少人阅读过此篇文章哦
最专业的Python社区,有每日推送,免费电子书,真人辅导,资源下载,各类工具。我已委托“维权骑士”()为我的文章进行维权行动
您的【关注和订阅】是作者不断前行的动力
本站文章来自网友的提交收录,如需删除可进入
删除,或发送邮件到 bang@ 联系我们,
(C)2014&&版权所有&&&|&&&
京ICP备号-2&&&&京公网安备345692人阅读
Falsk开发(1)
基于Flask的博客系统搭建
最近在学习python,然后呢,python的用处还很多,原来计划搞机器学习和数据挖掘的,不幸…..看到python可以开发后端,一时技痒,就学习了,当时从网上找了很多资料,还有就是当时要参加比赛,所以肯定是越快上手越好,越小越好,后来选择了flask,现在静下心来看《FlaskWeb开发:基于Python的Web应用开发实战》一书,然后随着书本逐步学习flask并且逐步完善本博客系统。现在开源,并托管在github上。希望大家可以多多交流~~
与Flasky的区别
在《FlaskWeb开发:基于Python的Web应用开发实战》一书中,实现的简单博客功能,包括用户认证、登录、注册系统,博客编写页面,评论功能,用户资料主页,用户关注等功能。
我在学习的基础上增加了一些功能:
- 博客关注功能,新增了推荐和关注页面,也就是说,广场的形式就是推送目前较新的博客,推荐是推荐关注的博主的最新博文,关注是关心的博客的动态;
- 添加了态度评论,即可以给博客和评论进行点赞,表示赞同和不赞同;- - 添加了云标签,可以通过热门标签来获得网站的动态。
修改的功能:
- 对网站进行了改版,页面的更换,样式的修改;
- 对于用户头像,采用离线缓存Gravatar的两种类型头像,然后使用邮箱地址的一个映射函数,让用户获取默认头像;
- 修改了posts表的模型,去掉html_body属性,也就是说服务端不缓存Markdown的html版本,在浏览器端使用来形成实时编辑和预览,以及渲染的工作;
后期新增功能:
- 添加评论的评论功能,实现盖楼评论;
- 修改博客编辑页面,使其更友好,支持更多的markdown的类型;
- 增加图片墙的功能,让用户可以上传图片;
- 支持markdown文档上传,生成博客的功能。
1.安装环境
如果使用这个模板很简单,首先你需要下载源码(这是当然的),然后安装python2.7环境,对于linux用户,python2.7是标配的,windows需要根据版本下载python安装程序就好了。下面给出ubuntu下的python安装。
$sudo apt-get install python
然后需要安装依赖库,你也可以在虚拟环境中安装哦,这样更方便一点。
$sudo pip install -r requirements.txt
所有与环境相关的配置,都在config.py文件中,不过你不用修改它,因为这些配置信息都来自于系统的环境变量,你可以设置环境变量来大概修改配置的目的,同时满足了隐私。值得一提是,我们提供了一个脚本来自动的初始化配置信息和加载必要的环境变量,为了保护隐私,我给注释了但是使用者必须填写,具体操作在第八节,我先说明一下需要配置的环境变量。
export WEBSERVER_ACCESSIP=127.0.0.1
设置好后,可以直接运行run.sh进行测试(第八节),当然你也可以手动的把环境变量输入(这是必须的),然后直接运行manage.py脚本进行测试。
最好的一个选择是,配置好run.sh下的环境变量,使用sudo执行,然后再进行下列命令,因为这时候系统已经保存有这些环境变量了。也可以把他们放在自己的bash.rc配置文件中。
2.数据库迁移
使用flask-migrate后,数据库迁移变得so easy,同时本步骤是必须的,有可能你下载下来的master版本是已经生成数据库了,默认的是SQLLite,但是你可以把miratation文件夹和sqllite文件删除,来重新迁移数据库,也就是重新建表。
迁移工程初始化,该步骤可以初始化一个迁移工程为后续做准备。
$python manage.py db init
初始化后,需要实行migrate指令,来生成迁移脚本,也就是说迁移工具自动生成配置数据库的脚本,该步骤必须显示调用。
$python manage.py db migrate -m "init version"
生成迁移脚本了,那么就开始正式迁移了,运行下面命令即可,如果没有数据库表,该命令会显式创建,同时运行迁移脚本,迁移数据库。
$python manage.py db upgrade
好了,现在数据库迁移完成了,可以进行下一步了。
3.启动前准备
现在虽说基本建好环境了,但是对了本博客系统实现了简单的权限管理,所以必须显式的建立权限角色,否则会出现绑定角色失败,用户只能沦为无权限状态。不过新建角色也很简单。
$python manage.py shell
&&& Role.insert_roles()
&&& Role.query.all()
[&Role u'Moderator'&, &Role u'Administrator'&, &Role u'User'&]
还有就是建立一个初始的超级管理员,步骤如下:
$python manage.py shell
&&& u = User(username='GalaIO', email='*****@**.com', role=Role.query.filter_by(name='Administrator').first(), password='***')
&&& u.generate_avatar_url()
&User 'GalaIO'&
&&& db.session.add(u)
现在你只需要完成邮件验证就好了,当然这个你也可以通过后台数据库操作。
还有为了支持匿名评论功能,需要主动的添加一个匿名用户,如果没有设置,系统会报异常来提示的。操作也很简单。
$python manage.py shell
&&& User.insert_Anonymous()
这时就可以匿名评论了,实现匿名功能随后细聊,匿名用户比较特殊,只可以评论,同时也只有名字属性,其他属性为None。
flask-script支持以下面命令启动应用。
$python manage.py runserver
这时候就可以完美访问你的服务器了,但是需要注意的是这时只能本机访问,如果需要外部计算机访问,可以添加参数,指定所有IP可访问,即0.0.0.0,同时可指定绑定的端口号。
$python manage.py runserver -h 0.0.0.0 -p 8000
* Restarting with stat
* Debugger is active!
* Debugger pin code: 113-835-817
* Running on http://0.0.0.0:8000/ (Press CTRL+C to quit)
如果需要更多功能选项,可以访问如下命令来查看。
$python manage.py runserver --help
值得一提是,本博客实现了一个默认命令,也就是说直接执行:
$python manage.py
也可以运行服务器,而端口和可访问的ip段在Config类中定义,可以修改。
二、在shell环境中使用flask和数据库
这个比较简单,在键入命令后,在后台模板会自动把app实例、sqlalchemy实例、数据库定义自动的加载到shell中,你可以在其中自由做测试,或者手动添加、修改数据库等。博客建立的所有模型,在这个交互环境中都有映射。
$python manage.py shell
&Flask 'app'&
&SQLAlchemy engine='sqlite:///C:\\Users\\GalaIO\\Desktop\\GalaIO\\flask_pro\\data-dev.sqlite'&
&&& System
&class 'app.models.System'&
三、使用数据库迁移工具
数据库迁移已经建立了一个基本版本,如果需要更新数据库模型,如果移动到新的部署环境,可以直接运行下面命令来同步数据库。也就是说如果初次建立后,如果更新了数据库模型,那么你可以使用如下命令来更新数据库,一个是生成迁移脚本,一个执行升级功能,但是需要注意新增表和属性好办,如果删除了现有的表和属性,那么你得手动处理migrate命令生成的脚本是否正确。
$python manage.py db migrate
$python manage.py db upgrade
四、修改配置文件
该结构框架提供了灵活的修改模式,如果添加一些配置项,可以添加在Config类中,如果想在生产环境和开发、测试环境使用不同的参数,需要在扩展类中进行修改,不过最通用的参数使用系统的环境变量。
这时一个从环境变量中引用密钥的例子,or的作用是在环境变量不起作用时,拥有替代方案。
SECRET_KEY = os.environ.get('SECRET_KEY') or 'hard to guess'
在配置文件可以同代项app.config字典中添加键值对,满足flask扩展库和全局通用量的需要,这些代码应写在如下:
@staticmethod
def init_app(app):
也就是说,我们的SECRET_KEY和DATABASE_URL默认从环境变量中引用,否则就使用默认字符串,或者在本地目录新建、寻找数据库。
同时我们还在Config中添加了,如下几个字段,由于配置生产环境时候,具体配置看8节。
PORT = 8080
ACCESSIPS = '127.0.0.1'
五、增加模型
数据模型文件存在app目录下,添加数据模型很简单,只需要按照按照例子添加一个类就可以了,后台会自动完成,同时若想学习更多的SQLalchemy的ORM操作,可以访问来获取资源。
class System(db.Model):
name = db.Column(db.String(64), primary_key=True)
def __repr__(self):
return '&System %r&' % self.name
六、模板与静态文件
flask会自动分发和处理对于static下的静态文件,一般包括css样式、js脚本、img图片等等。
templates目录下是所有的模板文件,由程序控制渲染展示给用户,这些都是flask的基础知识,这里不阐述,需要说明的是,我们提供了一个默认的根目录的模板index.html,还有常见错误类型404.html、500.html。如果想换成自己的样式,必须进行替换和更改,同时不影响你的其他创作。
七、添加新的路由映射
模板提供了一个index路由的例子,可以先复制直接修改使用。值得提醒的是,可以把errors文件夹删除,因为他们定义的是全局的错误路由处理,主要修改的是views.py脚本,如果需要增加新的类声明的,在该文件夹下进行,最后当然需要在_init_.py中修改蓝图的名字,记得与包文件名一致,这些都是好的编码习惯哦。
八、自动生成配置文件
使用python直接负责后台可能会有弊端,一般构造一个生产环境,现在是一个比较简单的,它会生成nginx和uwsgi的配置文件,这都是自动的,然后分别把配置文件放到相应的目录即可。更重要的是在其中会执行pip的依赖库备份,还有自动迁移和更新数据库。
os.system('rm *-nginx.conf')
os.system('rm *-uwsgi.xml')
os.system('python manage.py db migrate')
os.system('python manage.py db upgrade')
Role.insert_roles()
os.system('pip freeze & requirements.txt')
命令执行如下:
$python manage.py conf
执行上述命令就会发现在本地目录出现一个*-nginx.conf和*-uswgi.xml两个文件,现在你需要电脑安装好这两个程序,一个是反向代理服务器nginx,另一个是python的通用网关接口uwsgi。安装命令如下:
$sudo apt-get install nginx
$sudo apt-get install uwsgi
把**-nginx.conf移动到nginx的配置文件,并且重新加载nginx的配置。
$sudo cp ./****-nginx.conf /etc/nginx/con.f/
$sudo /usr/sbin/nginx -s reload
启动uwsgi服务器,并手动设置log文件。
$sudo uwsgi -x ****-uwsgi.xml -d ./****.log
这样就简单搭建了生产环境。
值得一提:我们提供了run.sh和exit.sh的脚本,用于自动运行和退出。如果有必须,可以使用chmod命令来给run.sh、exit.sh添加执行权限。
九、添加新的库
在开发中往往需要添加新的库,但是需要说明的一点,希望大家进入虚拟环境中,使用pip安装,安装环境也打包了,当然这是windows上的虚拟环境,因为在虚拟环境安装会默认安装到venv/Lib/site-packages/中,我们程序每次动态吧改路径链入我们的库搜索路径,所以可以直接运行,就像步骤一说的一样。
如果安装了新的库,记得更新一下依赖库列表哦。运行如下命令。
$pip freeze & requiremwnts.txt
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:6131次
排名:千里之外

我要回帖

更多关于 python 开源博客系统 的文章

 

随机推荐