Python Flask Web框架教程 1 Hellow, World!

2024-02-19 05:58

本文主要是介绍Python Flask Web框架教程 1 Hellow, World!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文

Installing Python

如果你的计算机上没有安装Python,请立即安装。如果你的操作系统没有为你提供Python包,你可以从Python官方网站下载安装程序。如果你将Microsoft Windows与WSL或Cygwin一起使用,请注意,你将不会使用Windows本机版本的Python,而是需要从Ubuntu(如果您使用WSL)或Cygwin获得的Unix友好版本。
为了确保Python安装的功能正常,可以打开一个终端窗口并键入python3,如果这样做不起作用,就键入python。以下是你应该看到的内容:

$ python3
Python 3.5.2 (default, Nov 17 2016, 17:05:23)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> _

Python解释器现在正等待一个交互式提示,你可以在这里输入Python语句。在以后的章节中,你将了解这个交互式提示对于什么样的事情是有用的。但是现在,你已经确认Python已经安装在你的系统上。要退出交互式提示,可以键入exit()并按Enter键。在Linux和Mac OS X版本的Python上,还可以按Ctrl-D退出解释器。在Windows上,退出快捷方式是Ctrl-Z,然后按Enter。

Installing Flask

下一步是安装Flask,但在此之前,我想告诉你与安装Python包相关的最佳实践。
在Python中,诸如Flask之类的包可以在公共存储库中使用,任何人都可以从那里下载并安装它们。官方的Python包存储库称为PyPI,它代表Python包索引(有些人还将此存储库称为“cheese shop”)。从PyPI安装软件包非常简单,因为Python附带了一个名为pip的工具来完成这项工作(在python2.7中,pip没有与Python捆绑在一起,需要单独安装)。
要在计算机上安装软件包,请按如下方式使用pip

$ pip install <package-name>

有趣的是,这种安装软件包的方法在大多数情况下都不起作用。如果你的Python解释器是为你的计算机的所有用户全局安装的,那么你的常规用户帐户很可能没有对其进行修改的权限,因此使上述命令起作用的唯一方法是从管理员帐户运行它。但是,即使没有这种复杂的情况,也要考虑一下当你安装如上所述的包时会发生什么。pip工具将从PyPI下载包,然后将其添加到Python安装中。从那时起,系统上的每个Python脚本都可以访问这个包。想象一下这样一种情况:你已经使用Flask的0.11版本完成了一个web应用程序,它是你启动时Flask的最新版本,但现在已经被0.12版本取代了。你现在想要启动第二个应用程序,你希望使用0.12版本,但是如果替换已安装的0.11版本,则可能会破坏旧的应用程序。你看到问题了吗?如果可以安装Flask0.11供旧应用程序使用,也可以安装Flask0.12供新应用程序使用,这将是理想的。
为了解决为不同的应用程序维护不同版本的包的问题,Python使用了虚拟环境的概念。虚拟环境是Python解释器的完整副本。在虚拟环境中安装软件包时,系统范围内的Python解释器不受影响,只有副本受影响。因此,要完全自由地为每个应用程序安装任何版本的软件包,解决方案是为每个应用程序使用不同的虚拟环境。虚拟环境还有一个额外的好处,即它们由创建它们的用户拥有,因此它们不需要管理员帐户。
我们先创建一个项目所在的目录。我将把这个目录称为microblog,因为这是应用程序的名称:

$ mkdir microblog
$ cd microblog

如果你使用的是Python 3版本,则其中包含虚拟环境支持,因此创建一个版本所需做的就是:

$ python3 -m venv venv

通过这个命令,我要求Python运行venv包,它创建了一个名为venv的虚拟环境。命令中的第一个venv是Python虚拟环境包的名称,第二个是我将用于此特定环境的虚拟环境名称。如果你发现这让人困惑,可以用另一个要分配给虚拟环境的名称替换第二个venv。一般来说,我在项目目录中创建了名为venv的虚拟环境,因此每当我用cd进入项目时,我都会找到相应的虚拟环境。
注意,在某些操作系统中,你可能需要在上面的命令中使用python而不是python3。有些安装使用python2.x版本的python和3.x版本的python3,而有些安装则将python映射到3.x版本。
命令完成后,你将拥有一个名为venv的目录,其中存储虚拟环境文件。
如果你使用的是任何早于3.4的Python版本(包括2.7版本),则不支持虚拟环境。对于那些版本的Python,您需要下载并安装一个名为virtualenv的第三方工具,然后才能创建虚拟环境。安装virtualenv后,可以使用以下命令创建虚拟环境:

virtualenv venv

无论你使用何种方法创建虚拟环境,都应该创建虚拟环境。现在你必须告诉系统你想使用它,然后激活它。要激活全新的虚拟环境,请使用以下命令:

$ source venv/bin/activate
(venv) $ _

如果使用的是Microsoft Windows命令提示符窗口,则激活命令略有不同:

$ venv\Scripts\activate
(venv) $ _

当你激活一个虚拟环境时,终端会话的配置会被修改,这样存储在其中的Python解释器就是您键入Python时调用的解释器。此外,终端提示也被修改为包含激活的虚拟环境的名称。对终端会话所做的更改都是临时的,并且是该会话的专用更改,因此当你关闭终端窗口时,这些更改不会持久存在。如果你同时打开多个终端窗口,那么在每个窗口上激活不同的虚拟环境是非常好的。
现在你已经创建并激活了虚拟环境,最后可以在其中安装Flask:

(venv) $ pip install flask

如果要确认你的虚拟环境现在已经安装了Flask,可以启动Python解释器并将Flask导入(import)其中:

>>> import flask
>>> _

如果这句话没有给你任何错误,你可以祝贺自己,因为Flask已安装并准备好使用。

A “Hello, World” Flask Application

如果你去Flask网站,你会得到一个非常简单的示例应用程序,它只有五行代码。不再重复这个简单的例子,我将向你展示一个稍微复杂一点的例子,它将为你提供一个编写更大应用程序的良好基础结构。
应用程序将存在于包中。在Python中,包含一个__init__.py文件的子目录被认为是一个包,可以导入。导入包时,__init__.py将执行并定义包向外部世界公开的符号。
让我们创建一个名为app的包,它将承载应用程序。确保你在microblog目录中,然后运行以下命令:

(venv) $ mkdir app

app包的__init__.py将包含以下代码:

#app/__init__.py: Flask application instancefrom flask import Flaskapp = Flask(__name__)from app import routes

上面的脚本只是将应用程序对象创建为从flask包导入的Flask类的实例。传递给Flask类的__name__变量是Python预定义变量,该变量设置为使用它的模块的名称。 Flask需要加载相关资源(例如模板文件)时,会以此处传递的模块的位置为起点,这将在第2章中介绍。出于所有实际目的,传递__name__几乎总是会以正确的方式配置Flask道路。然后,应用程序将导入路由(routes)模块,该模块尚不存在。

一开始似乎令人困惑的方面是,有两个名为app的实体。该应用程序包由app目录和__init__.py脚本定义,并在from app import route语句中引用。 app变量在__init__.py脚本中定义为Flask类的实例,这使其成为app包的成员。

另一个特殊之处是,路由(routes)模块是始终在脚本的底部而不是顶部导入的。底部导入是循环导入的一种解决方法,而循环导入是Flask应用程序的常见问题。你将看到route模块需要导入此脚本中定义的app变量,因此,将其中一个相互导入放在底部可以避免由于这两个文件之间的相互引用而导致的错误。

那么,routes模块中有什么?路由是应用程序实现的不同URL。在Flask中,应用程序路由的处理程序被编写为Python函数(称为视图函数)。视图函数被映射到一个或多个路由URL,以便Flask知道当客户端请求给定URL时要执行的逻辑。

这是你的第一个视图函数,你需要在名为app/routes.py的新模块中编写该函数:

#app/routes.py: Home page routefrom app import app@app.route('/')
@app.route('/index')
def index():return "Hello, World!"

这个视图函数实际上非常简单,它只是以字符串形式返回问候语。函数上方的两条奇怪的@app.route行是装饰器,这是Python语言的独特功能。装饰器修改其后的功能。装饰器的常见模式是使用它们将函数注册为某些事件的回调。在这种情况下,@app.route装饰器会在作为参数提供的URL与函数之间创建关联。在此示例中,有两个装饰器,它们将URL //index与此函数相关联。这意味着,当Web浏览器请求这两个URL中的任意一个时,Flask将调用此函数并将其返回值作为响应传递回浏览器。

要完成该应用程序,你需要在顶层定义一个Flask应用程序实例的Python脚本。让我们将此脚本称为microblog.py,并将其定义为导入应用程序实例的一行:

#microblog.py: Main application modulefrom app import app

还记得这两个app实体吗? 在这里,你可以在同一句子中同时看到这两者。 Flask应用程序实例称为app,并且是app包的成员。 from app import app语句导入作为app包成员的app变量。 如果你感到困惑,则可以将包或变量重命名为其他名称。

为了确保你正确执行所有操作,下面你可以看到到目前为止的项目结构图:

microblog/venv/app/__init__.pyroutes.pymicroblog.py

信不信由你,该应用程序的第一个版本现已完成! 但是,在运行它之前,需要通过设置FLASK_APP环境变量来告诉Flask如何导入它:

(venv) $ export FLASK_APP=microblog.py

如果你使用的是Microsoft Windows,请在上面的命令中使用set代替export

你准备好被吹走了吗? 你可以使用以下命令运行第一个Web应用程序:

(venv) $ flask run* Serving Flask app "microblog"* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

服务器初始化后,它将等待客户端连接。 flask run的输出表明服务器正在IP地址127.0.0.1上运行,该地址始终是你自己计算机的地址。 该地址非常普遍,因此也具有一个你以前可能会看到的更简单的名称:localhost。 web服务器在特定端口号上侦听连接。 生产Web服务器上部署的应用程序通常在端口443上侦听,如果未实现加密,则有时在80上侦听,但是访问这些端口需要管理权限。 由于此应用程序在开发环境中运行,因此Flask使用免费的端口5000。现在打开您的Web浏览器,并在地址字段中输入以下URL:

http://localhost:5000/

或者,你可以使用以下其他URL:

http://localhost:5000/index

你是否看到了应用程序路由映射的实际作用? 第一个URL映射到 /,第二个URL映射到 /index。 这两个路由都与应用程序中唯一的视图函数相关联,因此它们会产生相同的输出,即该函数返回的字符串。 如果输入任何其他URL,则将收到错误消息,因为应用程序仅识别这两个URL。

完成服务器的演示后,你可以按Ctrl-C停止它。

恭喜,你已经完成了成为Web开发人员的第一步!

在结束本章之前,我想再提一件事。 由于在终端会话之间不会记住环境变量,因此打开新的终端窗口时,总是必须设置FLASK_APP环境变量很麻烦。 从1.0版开始,Flask允许你注册要在运行flask命令时自动导入的环境变量。 要使用此选项,您必须安装python-dotenv软件包:

(venv) $ pip install python-dotenv

然后,你可以将环境变量的名称和值写入项目顶层目录中的.flaskenv文件中:

#.flaskenv: Environment variables for flask commandFLASK_APP=microblog.py

这样做是可选的。如果你喜欢手动设置环境变量,只要你始终记得这样做,这是非常好的。

这篇关于Python Flask Web框架教程 1 Hellow, World!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/723702

相关文章

使用Python的requests库调用API接口的详细步骤

《使用Python的requests库调用API接口的详细步骤》使用Python的requests库调用API接口是开发中最常用的方式之一,它简化了HTTP请求的处理流程,以下是详细步骤和实战示例,涵... 目录一、准备工作:安装 requests 库二、基本调用流程(以 RESTful API 为例)1.

Python清空Word段落样式的三种方法

《Python清空Word段落样式的三种方法》:本文主要介绍如何用python-docx库清空Word段落样式,提供三种方法:设置为Normal样式、清除直接格式、创建新Normal样式,注意需重... 目录方法一:直接设置段落样式为"Normal"方法二:清除所有直接格式设置方法三:创建新的Normal样

Python调用LibreOffice处理自动化文档的完整指南

《Python调用LibreOffice处理自动化文档的完整指南》在数字化转型的浪潮中,文档处理自动化已成为提升效率的关键,LibreOffice作为开源办公软件的佼佼者,其命令行功能结合Python... 目录引言一、环境搭建:三步构建自动化基石1. 安装LibreOffice与python2. 验证安装

把Python列表中的元素移动到开头的三种方法

《把Python列表中的元素移动到开头的三种方法》在Python编程中,我们经常需要对列表(list)进行操作,有时,我们希望将列表中的某个元素移动到最前面,使其成为第一项,本文给大家介绍了把Pyth... 目录一、查找删除插入法1. 找到元素的索引2. 移除元素3. 插入到列表开头二、使用列表切片(Lis

Python按照24个实用大方向精选的上千种工具库汇总整理

《Python按照24个实用大方向精选的上千种工具库汇总整理》本文整理了Python生态中近千个库,涵盖数据处理、图像处理、网络开发、Web框架、人工智能、科学计算、GUI工具、测试框架、环境管理等多... 目录1、数据处理文本处理特殊文本处理html/XML 解析文件处理配置文件处理文档相关日志管理日期和

Python标准库datetime模块日期和时间数据类型解读

《Python标准库datetime模块日期和时间数据类型解读》文章介绍Python中datetime模块的date、time、datetime类,用于处理日期、时间及日期时间结合体,通过属性获取时间... 目录Datetime常用类日期date类型使用时间 time 类型使用日期和时间的结合体–日期时间(

使用Python开发一个Ditto剪贴板数据导出工具

《使用Python开发一个Ditto剪贴板数据导出工具》在日常工作中,我们经常需要处理大量的剪贴板数据,下面将介绍如何使用Python的wxPython库开发一个图形化工具,实现从Ditto数据库中读... 目录前言运行结果项目需求分析技术选型核心功能实现1. Ditto数据库结构分析2. 数据库自动定位3

Python yield与yield from的简单使用方式

《Pythonyield与yieldfrom的简单使用方式》生成器通过yield定义,可在处理I/O时暂停执行并返回部分结果,待其他任务完成后继续,yieldfrom用于将一个生成器的值传递给另一... 目录python yield与yield from的使用代码结构总结Python yield与yield

python使用Akshare与Streamlit实现股票估值分析教程(图文代码)

《python使用Akshare与Streamlit实现股票估值分析教程(图文代码)》入职测试中的一道题,要求:从Akshare下载某一个股票近十年的财务报表包括,资产负债表,利润表,现金流量表,保存... 目录一、前言二、核心知识点梳理1、Akshare数据获取2、Pandas数据处理3、Matplotl

Django开发时如何避免频繁发送短信验证码(python图文代码)

《Django开发时如何避免频繁发送短信验证码(python图文代码)》Django开发时,为防止频繁发送验证码,后端需用Redis限制请求频率,结合管道技术提升效率,通过生产者消费者模式解耦业务逻辑... 目录避免频繁发送 验证码1. www.chinasem.cn避免频繁发送 验证码逻辑分析2. 避免频繁