全部主题 | Blog | 时讯 | @fullstackpython | Facebook | 源码
Web 框架
Web 框架就是一份代码库,它能帮助开发人员创建可靠、可扩展、易维护的 Web 应用。
为什么 Web 框架很有必要?
Web 框架封装了开发人员在过去二十年中学到的网站和 Web 应用开发的经验总结。它使得重用代码(例如通用 HTTP 操作和项目代码组织等)变得更加容易,因而熟悉该框架的其他开发人员就能快速创建和维护应用程序。
Web 框架的基本功能
框架通过它们自己的代码或扩展代码提供功能,以实现运行 Web 应用所需的基本操作。这些基本操作包括:
- URL 路由
- HTML、 XML、JSON 及其它输出模式模板
- 数据库处理
- 跨站请求伪造安全问题(CSRF)和其它攻击
- session 存取
不是所有的 Web 框架都包含以上全部功能。框架种类从执行单一的用例到提供每个开发人员熟知的每个 Web 框架功能,不一而足。一些框架奉行“即插即用”的理念,把所有可能的东西都打包进来,而其它一些框架却有一个很小的内核包,以方便通过第三方代码包来扩展功能。
例如,Django Web 应用框架 含有一个对象关系映射 (ORM) 层来对关系型数据库的读、写、查询和删除操作进行抽象。但是,Django 的 ORM 如果不进行大量修改的话,是不能操作像 MongoDB 等的非关系型数据库的。
其它一些框架,像 Flask 和 Pyramid 可以通过包含进外部 Python 库来更加容易地与非关系型数据库一起使用。框架的实现,都需要在最少功能和易扩展性,以及将所有东西都包含进来以提高整合度这两个选择之间进行抉择。
Web 框架对比
你对一个项目用 Django 实现和用 Flask 实现的代码对比感兴趣吗?看下 这篇 Django Web 应用教程 然后再看下 由 Flask 实现的相同的应用。
还有一份代码库叫 compare-python-web-frameworks,上面的一个相同的 Web 应用由不能的 Python Web 框架、模板引擎和 对象关系映射器来实现。
既然已经学了 Web 框架,你也应该学下 Web 应用部署 和 Web API。
我需要使用 Web 框架吗?
你的项目是否需要使用 Web 框架取决于你的网站开发经验和你的目标。如果你是一个初级程序员并且以学习为目的来开发一个 Web 应用,那么框架能帮助你理解下面的这些概念,例如 URL 路由、数据处理和认证等这些主流的 Web 应用都具有的功能。
另一方面,如果你是一位有经验的程序员,具有丰富的网站开发经验,你可能会觉得现有的框架不能满足你的项目需求。如果那样的话,你可以将 Werkzeug 等开源库、WSGI 功能包和你自己的代码进行混合匹配来创建你自己的框架。 Python 的生态系统仍然为新框架留了足够的空间,以便去满足那些不能从Django、 Flask、 Pyramid、 Bottle 和 许多其它框架 中得到满足的程序员的需求。
简言之,你是否需要使用 Web 框架来创建 Web 应用取决于你的经验和你的目标。使用框架来创建 Web 应用当然不是必需的,但是在多数情况下,它能让开发人员的生活变得更加轻松。
Web 框架相关资源
"什么是 Web 框架?" 深入讲解了什么是 Web 框架以及它们与 Web 服务器的关系。
你可以看下 Stack Overflow 上有关 "什么是 Web 框架以及如何与 LAMP 比较?" 这个问题的答案。
框架 真的是一部精彩的短视频,它向你讲解了如何选择 Web 框架。它的作者对一个框架应该有哪些功能有一些独特的看法。我赞同里面说的大部分内部,尽管我认为如果 session 和 数据库 ORM 如何实现的好的话也应该是框架的一个有用的构件。
Django vs Flask vs Pyramid:选择一个 Python Web 框架 包含了一些背景资料,并通过用这三个主流的 Python 框架实现类似的 Web 应用来进行代码对比。
这篇精彩的博文通过对代码的图形化分析,列出了 几个 Python Web 框架的代码复杂度。
Python Web 框架基准测试 上有一份针对各框架响应度的测试,测试方式是先将一个对象编码成 JSON 然后返回,以及从数据库中读取数据然后在模板中呈现。虽然没有确凿性结果,但是看看上面的输出内容还是很有趣的。
你使用什么 Web 框架以及为什么觉得它好? 是 Reddit 上有关 Web 框架的讨论。 看看使用其它语言的程序员对于他们的 Web 框架的品味,然后与主流的 Python 框架比较一下也是蛮有意思的。
这个由用户投票的问答网站上问到 "在生产环境下哪个是最好的通用 Python Web 框架?"。看看上面列出的那么多能让 Python 开发人员使用的框架比看投票结果重要多了。
Web 框架学习清单
选择一个主流 Python Web 框架 (推荐 Django 和 Flask),然后坚持使用。刚开始的时候最好只学习一个框架,而不要试图去理解每个框架。
根据那个框架的网站上的资源链接,寻找一份详细的教程,并据此进行练习。
研究用你所选框架开发的开源案例,这样你就能参与这些项目并在你的应用中重用这些代码。
写完你的 Web 应用的第一个版本,然后参考 部署 那一章,将它发布到网上。
你想学习哪个 Web 框架?
想找到一个完整的,一步一步的部署方案吗?请看《The Full Stack Python Guide to Deployments》.
邮件获取更新
目录
1. 简介学习编程为什么用 Python?Python 2 还是 3?企业 PythonPython CommunityBest Python Podcasts最佳 Python 资源最佳 Python 视频2. 开发环境VimEmacs3. 核心语言生成器推导式4. Web 开发Web 框架DjangoFlaskBottlePyramidMorepath其它 Web 框架Web 设计级联样式表 (CSS)JavaScriptWebSockets模板引擎Web 应用安全静态网站生成器Jinja25. 数据关系型数据库NoSQL 数据存储对象关系映射器PostgreSQLMySQLSQLite6. Web APIsAPI 集成API 的创建Twilio7. 部署服务器平台即服务(PaaS)操作系统Web 服务器WSGI 服务器源码控制应用程序依赖静态内容任务队列配置管理持续集成日志监控Web 分析Docker缓存微服务DevOpsNginxApache HTTP 服务器CaddyGreen Unicorn (Gunicorn)UbuntuPelicanLektorMkDocs8. 测试单元测试集成测试代码度量调试9. MetaBotsChange LogFuture DirectionsAbout the AuthorSQLAlchemyPeewee …或者显示全部目录内容.
Web 框架
重要的更新内容会通过 Twitter 账号@fullstackpython发布。
需要更加详细的教程吗?请看 《The Full Stack Python Guide to Deployments》。
Chapters
1. 简介2. 开发环境3. 核心语言4. Web 开发 » Web 框架 5. 数据6. Web APIs7. 部署8. 测试9. Meta …or view the full table of contents.
This site is based on Matt Makai's project Full Stack Python, thanks for his excellent work!
此网站由 @haiiiiiyun 和 开源爱好者们 共同维护。 若发现错误或想贡献,请访问: Github fullstackpython.cn 项目