Flask教程-第1章 hello world (翻译)

Hello World

原文

本文GitHub

安装flask

这一步可以随意,建议自己新建一个python虚拟环境

python -m venv flaskenv

简单的flask应用

在flask官网上,它会给你一个简单的测试程序,而不是一个简单的项目。
我将向您展示一个稍微复杂的示例,它将为您编写大型应用程序提供良好的基础结构。

先看一下我的项目结构

flaskenv
microblog/
    app/
        __init__.py
        routes.py
    microblog.py

flaskenv是我的python虚拟环境,microblog是整个简单的应用。我们创建一个名为app的程序包,它将托管该应用程序。

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

接下来的操作都是在microblog文件夹下执行的

下面开始逐个文件去看

#app/__init__.py
from flask import Flask

app = Flask(__name__)

from app import routes

传递给Flask类的__name__变量是Python预定义变量,该变量设置为使用它的模块的名称。 Flask需要加载相关资源(例如模板文件)时,将此处传递的模块位置用作起点。

然后,该应用程序导入(routes)路由模块,该模块尚不存在。

note

有的新人可能会疑惑这里有两个 app。在__init__.py文件中,第一行的app是一个Flask类的实例。

第二行的app是包,是我们app这个文件夹,因为有__init__.py这个文件,该app文件夹被定义成包,同时这个包里还有routes.py文件。
note

现在来看第三行代码,它从app包里导入routes,不过它为什么要写在底部而不是顶行。这是为了避免“循环导入”。因为routes要导入app包里的app成员,app包又要导入routes文件,感觉要死锁了。

不过把第三行放在底部就好了,确切的说是放在第二行代码后面,(从上往下读代码)在启动routes的时候要保证app包里已经有app实例了。

举个错误例子

#app/__init__.py
from flask import Flask

from app import routes

app = Flask(__name__)

首先导入Flask,然后从app包里导入routes,接着进入routes,routes首先导入app包里的app实例,但注意,按照我们读代码的顺序,目前app包里是没有app实例的,所以就会报错。
routes代码

#app/routes.py
from app import app

@app.route('/')
@app.route('/index')
def index():
    return "Hello, World!"

这里又出现了双app的代码,第一个app指的是包app,第二个app是这个包的成员,它是Flask类的一个实例。如果你觉得有点绕,可以把其中一个app换一个名字。如果你了解python的包结构,这不是问题。

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

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

现在我们定义好一个程序实例了,一定义了一个视图函数,接下来就是怎么让它运行起来

#microblog.py
from app import app
export FLASK_APP=microblog.py
flask run

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

最后打开浏览器输入

http://localhost:5000/

http://localhost:5000/index

都可以进入我们定义的视图函数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值