蚊章汇 - Nicholas Hunt-walker
type: channel
link: https://linuxcn.bwsl.wang/author/1138/
description: Nicholas Hunt-walker
items: Python Web 应用程序 Tornado 框架简介
items: Python Web 应用程序 Django 框架简介

Python Web 应用程序 Tornado 框架简介
type: item
date: 2019-02-10T02:03:06+08:00
description: 在比较 Python 框架的系列文章的第三部分中，我们来了解 Tornado，它是为处理异步进程而构建的。在这个由四部分组成的系列文章的前两篇中，我们介绍了 Pyramid 和 Flask Web 框架。我们已经构建了两次相同的应用程序，看到了一个完整的 DIY 框架和包含了更多功能的框架之间的异同。现在让我们来看看另一个稍微不同的选择：Tornado 框架。Tornado 在很大程度上与 Flask 一样简单，但有一个主要区别：Tornado 是专门为处理异步进程而构建的。在我们本系列所构建的应用程序中，这种特殊的酱料（LCTT 译注：这里意思是 Tornado 的异步功能）在我们构建的 app 中并不是非常有用，但我们将看到在哪里可以使用它，以及它在更一般的情况下是如何工作的。让我们继续前两篇文章中模式，首先从处理设置和配置开始。Tornado 启动和配置如果你一直关注这个系列，那么第一步应该对你来说习以为常。$ mkdir tornado_todo $ cd tornado_todo $ pipenv install --python 3.6 $ pipenv shell (tornado-someHash) $ pipenv install tornado创建一个 setup.py 文件来安装我们的应用程序相关的东西：(tornado-someHash) $ touch setup.py # setup.py from setuptools import setup, find_packages requires = [ 'tornado', 'tornado-sqlalchemy', 'psycopg2', ] setup( name='tornado_todo', version='0.0', description='A To-Do List built with Tornado', author='<Your name>', author_email='<Your email>', keywords='web tornado', packages=find_packages(), install_requires=requires, entry_points={ 'console_scripts': [ 'serve_app = todo:main', ], }, )因为 Tornado 不需要任何外部配置，所以我们可以直接编写 Python 代码来让程序运行。让我们创建 todo 目录，并用需要的前几个文件填充它。todo/ __init__.py models.py views.py就像 Flask 和 Pyramid 一样，Tornado 也有一些基本配置，放在 __init__.py 中。从 tornado.web 中，我们将导入 Application 对象，它将处理路由和视图的连接，包括数据库（当我们谈到那里时再说）以及运行 Tornado 应用程序所需的其它额外设置。# __init__.py from tornado.web import Application def main(): """Construct and serve the tornado application.""" app = Application()像 Flask 一样，Tornado 主要是一个 DIY 框架。当构建我们的 app 时，我们必须设置该应用实例。因为 Tornado 用它自己的 HTTP 服务器来提供该应用，我们必须设置如何提供该应用。首先，在 tornado.options.define 中定义要监听的端口。然后我们实例化 Tornado 的 HTTPServer，将该 Application 对象的实例作为参数传递给它。# __init__.py from tornado.httpserver import HTTPServer from tornado.options import define, options from tornado.web import Application define('port', default=8888, help='port to listen on') def main(): """Construct and serve the tornado application.""" app = Application() http_server = HTTPServer(app) http_server.listen(options.port)当我们使用 define 函数时，我们最终会在 options 对象上创建属性。第一个参数位置的任何内容都将是属性的名称，分…

Python Web 应用程序 Django 框架简介
type: item
date: 2018-12-01T03:00:57+08:00
description: 在这个比较 Python 框架的最后一篇中，让我们看看 Django。在本系列（由四部分组成）的前三篇文章中，我们讨论了 Pyramid、Flask 和 Tornado 这 3 个 Web 框架。我们已经构建了三次相同的应用程序，最终我们遇到了 Django。总的来说，Django 是目前 Python 开发人员使用的主要 Web 框架，并且原因显而易见。它擅长隐藏大量的配置逻辑，让你专注于能够快速构建大型应用程序。也就是说，当涉及到小型项目时，比如我们的待办事项列表应用程序，Django 可能有点像用消防水管来进行水枪大战。让我们来看看它们是如何结合在一起的。关于 DjangoDjango 将自己定位为“一个鼓励快速开发和整洁、实用的设计的高级 Python Web 框架。它由经验丰富的开发人员构建，解决了 Web 开发的很多麻烦，因此你可以专注于编写应用程序而无需重新发明轮子”。而且它确实做到了！这个庞大的 Web 框架附带了非常多的工具，以至于在开发过程中，如何将所有内容组合在一起协同工作可能是个谜。除了框架本身很大，Django 社区也是非常庞大的。事实上，它非常庞大和活跃，以至于有一个网站专门用于为人们收集第三方包，这些第三方包可集成进 Django 来做一大堆事情。包括从身份验证和授权到完全基于 Django 的内容管理系统，电子商务附加组件以及与 Stripe（LCTT 译注：美版“支付宝”）集成的所有内容。至于不要重新发明轮子：如果你想用 Django 完成一些事情，有人可能已经做过了，你只需将它集成进你的项目就行。为此，我们希望使用 Django 构建 REST API，因此我们将使用流行的 Django REST 框架。它的工作是将 Django 框架（Django 使用自己的模板引擎构建 HTML 页面）转换为专门用于有效地处理 REST 交互的系统。让我们开始吧。Django 启动和配置$ mkdir django_todo $ cd django_todo $ pipenv install --python 3.6 $ pipenv shell (django-someHash) $ pipenv install django djangorestframework作为参考，我们使用的是 django-2.0.7 和 djangorestframework-3.8.2。与 Flask, Tornado 和 Pyramid 不同，我们不需要自己编写 setup.py 文件，我们并不是在做一个可安装的 Python 发布版。像很多事情一样，Django 以自己的方式处理这个问题。我们仍然需要一个 requirements.txt 文件来跟踪我们在其它地方部署的所有必要安装。但是，就 Django 项目中的目标模块而言，Django 会让我们列出我们想要访问的子目录，然后允许我们从这些目录中导入，就像它们是已安装的包一样。首先，我们必须创建一个 Django 项目。当我们安装了 Django 后，我们还安装了命令行脚本 django-admin。它的工作是管理所有与 Django 相关的命令，这些命令有助于我们将项目整合在一起，并在我们继续开发的过程中对其进行维护。django-admin 并不是让我们从头开始构建整个 Django 生态系统，而是让我们从标准 Django 项目所需的所有必要文件（以及更多）的基础上开始。调用 django-admin 的 start-project 命令的语法是 django-admin startproject <项目名称> <存放目录>。我们希望文件存于当前的工作目录中，所以：(django-someHash) $ django-admin startproject django_todo .输入 ls 将显示一个新文件和一个新目录。(django-someHash) $ ls manage.py django_todomanage.py 是一个可执行命令行 Python 文件，它最终成为 django-admin 的封装。因此，它的工作与 django-admin 是一样的：帮助我们管理项目。因此得名 manage.py。它在 django_todo 目录里创建了一个新目录 django_todo，其代表了我们项目的配置根目录。现在让我们深入研究一下。配置 Django可以将 django_todo 目录称为“配置根目录”，我们的意思是这个目录包含了通常配置 Django 项目所需的文件。几乎所有这个目录之外的内容都只关注与项目模型、视图、路由等相关的“业务逻辑”。所有连接项目的点都将在这里出现。在 django_todo 目录中调用 ls 会显示以下四个文件：(d…