Flask学习系列(一)

安装python,。。。

安装virtualenv

pip install virtualenv

创建虚拟py环境

virtualenv vpython

激活虚拟py环境:

venv\Scripts\activate.bat

安装Flask

pip install flask

练习代码下载https://download.csdn.net/download/qiya_pk/11943108

应用程序是存在于*包*中的。 在Python中,包含`__init__.py`文件的子目录被视为一个可导入的包。 当你导入一个包时,`__init__.py`会执行并定义这个包暴露给外界的属性。

创建一个名为`app`的包来存放整个应用。

并在其下创建文件`__init__.py`,输入如下的代码:
```
from flask import Flask

app = Flask(__name__)

from app import routes
```

上面的脚本仅仅是从flask中导入的类`Flask`,并以此类创建了一个应用程序对象。 传递给`Flask`类的`__name__`变量是一个Python预定义的变量,它表示当前调用它的模块的名字。代码的最后,应用程序导入尚未存在的`routes`模块。

这段代码,乍一看可能会让人迷惑。

其一,这里有两个实体名为`app`。 `app`包由*app*目录和`__init__.py`脚本来定义构成,并在`from app import routes`语句中被引用。 `app`变量被定义为`__init__.py`脚本中的`Flask`类的一个实例,以至于它成为`app`包的属性。

其二,`routes`模块是在底部导入的,而不是在脚本的顶部。 最下面的导入是解决*循环导入*的问题,这是Flask应用程序的常见问题。 你将会看到`routes`模块需要导入在这个脚本中定义的`app`变量,因此将`routes`的导入放在底部可以避免由于这两个文件之间的相互引用而导致的错误。

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

这是需要写入到*app/routes.py*中的第一个视图函数的代码:
```
from 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应用程序实例的顶层(也就是microblog目录下)创建一个命名为*microblog.py*的Python脚本。 它仅拥有一个导入应用程序实例的行:
```
from app import app
```

还记得两个`app`实体吗? 在这里,你可以在同一句话中看到两者。 Flask应用程序实例被称为`app`,是`app`包的成员。`from app import app`语句从`app`包导入其成员`app`变量。 如果你觉得这很混乱,你可以重命名包或者变量。

只要确保所做的操作完全正确,那么你就可以看到如下面的项目结构图:
```
microblog/
  venv/
  app/
    __init__.py
    routes.py
  microblog.py
```

这个应用的第一个版本现在完成了! 但是在运行之前,需要通过设置`FLASK_APP`环境变量告诉Flask如何导入它:
```
(vpython)  set FLASK_APP=microblog.py
```

运行如下命令来运行你的第一个Web应用吧:
```
(vpython) 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上,这是本机的回环IP地址。由于此应用程序在开发环境中运行,因此Flask使用自由端口5000。 现在打开您的网络浏览器并在地址栏中输入以下URL:
```
    http://localhost:5000/
```

或者,你也可以使用另一个URL:
```
    http://localhost:5000/index
```

应用程序路由映射执行了吗? 第一个URL映射到`/`,而第二个映射到`/ index`。 这两个路由都与应用程序中唯一的视图函数相关联,所以它们产生相同的输出,即函数返回的字符串。 如果你输入任何其他网址,则会出现错误,因为只有这两个URL被应用程序识别。

完成演示之后,你可以按下Ctrl-C来停止Web服务。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值