--- title: Python Web Frameworks and What They Do localeTitle: Python Web框架及其功能 --- 我们在前面的文章中非常自由地使用了`framework`这个词。你可能熟悉或不熟悉那是什么。尽管如此,我们将讨论Python Web框架为您做什么,开箱即用。 如果你要建立许多具有不同功能的网站,那么非正式地说,Web框架可以为你做些_反复_做的事情。 让我们采取一个非常粗略的例子,并尝试做一个简单的类比。说,你去吃饭,这是一家高档餐厅。它可以是任何类型的餐厅 - 意大利,墨西哥,印度,韩国,泛亚洲。 试着想一下顾客走进餐厅时常见的事情。代客可能会带你的车去验证停车。如果您预订,可能会在接待处询问您;你们有多少朋友和你在一起您可能会被带到您的餐桌旁,或被要求等待 - 取决于里面的人群。 一旦就座,您将被问到是否需要常规水或瓶装水。然后有人会问你是否喜欢饮料。你可能会订购一些初学者,然后是主菜;最后,一些甜点。你必须支付账单。 我知道如果你想花一点时间去记忆里走一趟,享受美味的牙齿。完成后,您需要将自己置于经营业务人员的位置。 如果您注意到,您正在为每个客户重复进行一些活动。根据餐厅的类型和时间,有些事情会有所不同。例如,菜单和食品价格。 说,你正在经营这家公司;您还需要处理此业务的其他方面,客户可能会忘记这些方面。例如;工作人员的工资,管理书籍,支付房产的租金和税,打印新的菜单卡等。 你想知道这次谈话的目的地。冷静!我们正在尽快回到Python Web Development。 Web框架为您执行这些重复活动 - 当您仅使用编程语言和某些网络库构建Web应用程序时,您将执行此操作。如请求处理,URL路由,模板编译,上下文设置,CSRF保护,日志记录,通过ORM进行数据库交互,身份验证,响应呈现等。 你可能想知道开发人员要做什么呢?根据应用程序,您必须使用框架API并编写特定于应用程序的逻辑。 您的代码将填补框架代码中_故意_留下的空白 - 并将您的代码与框架相结合;您的Web应用程序将充满活力! Python中最流行的两个Web框架是Django和Flask。 Django可能是最常用的Python框架。 Django可以帮助您构建网站,您可以同时与客户端(用户)和数据库进行交互。 Flask是一个微框架,它也可以完成Django所做的大部分任务,但是通过使用社区的扩展。其他值得一提的框架是Pylons和Tornado。 ### Django的 Django(/dʒæŋɡoʊ/ JANG-goh)是一个免费的开源Web框架,用Python编写,遵循模型 - 视图 - 模板(MVT)架构模式。它由Django软件基金会(DSF)维护,这是一个独立的组织,成立为501(c)(3)非盈利组织。 Django的主要目标是简化复杂的数据库驱动网站的创建。 Django强调组件的可重用性和“可插拔性”,快速开发以及不重复自己的原则。 Python始终使用,甚至用于设置文件和数据模型。 Django还提供可选的管理创建,读取,更新和删除界面,该界面通过内省动态生成并通过管理模型进行配置。 一些使用Django的知名网站包括公共广播服务,Instagram,Mozilla,华盛顿时报,Disqus,Bitbucket和Nextdoor。它在Pinterest上使用,但后来该网站转移到了在Flask上构建的框架。 ### 烧瓶 Flask是一个轻量级的WSGI Web应用程序和一个微框架,它被归类为微框架,因为它不需要特定的工具或库。它旨在使入门快速简便,并能够扩展到复杂的应用程序。但是,Flask支持可以添加应用程序功能的扩展,就像它们在Flask本身中实现一样。存在对象关系映射器,表单验证,上载处理,各种开放式身份验证技术和几种常见框架相关工具的扩展。扩展程序的更新速度远远超过核心Flask程序。 Flask通常与MongoDB(NOSQL DataBase)一起使用,它允许更多地控制数据库和历史记录。 它最初是围绕Werkzeug和Jinja的简单包装器,并且已经成为最受欢迎的Python Web应用程序框架之一。 Flask提供建议,但不强制执行任何依赖项或项目布局。开发人员可以选择他们想要使用的工具和库。社区提供了许多扩展,可以轻松添加新功能。 Flask是由一个叫做“Pocoo”的国际Python小组于2004年制作的,作为一个愚人节的笑话,后来被制作成“真实”的东西。根据Wikpedia,它是Github上最常用的Python Web框架。它是一个用Python编写的免费开源微框架( [在GitHub上查看](https://github.com/freeCodeCamp/guide/tree/master/src/pages/javascript) )。正如维基百科所述, Flask被归类为微框架,因为它不需要特定的工具或库。它没有数据库抽象层,表单验证或任何其他预先存在的第三方库提供常用功能的组件。 与Django相比,Flask非常像“不包含电池”的框架。这意味着您需要自己安装用户身份验证,表单和其他内容等模块。这并不是说Flask不是为那些东西制作的,只是说它们不包括在内,而且这些模块是由社区制作的。 Flask还提供了大量详细的文档,网址为http://flask.pocoo.org/docs/。它提供简单性和对较小事物的更多控制。您将无法使用未使用的功能,因为您可以选择添加的内容和不添加的内容。 使用Flask的网站包括Pinterest! (从Django迁移而来),Twilio的私有API(他们甚至制作了一个名为Flask-RESTful for API的扩展名)和Netflix(使用ScriptFlask,一个基于Flask的工具) ### 瓶子 Bottle是一个Python微框架,允许用户快速启动并运行Python Web应用程序。它比Django等更全面的功能更轻量级,并且没有仅依赖于Python标准库的第三方依赖。 这使得它非常适合小型Web应用程序,在这些应用程序中,不需要Django的一些更高级的功能,例如身份验证或数据库访问。