资讯专栏INFORMATION COLUMN

Flask Web 开发实战笔记

罗志环 / 3021人阅读

摘要:开发实战笔记安装和使用虚拟环境虚拟环境是解释器的一个私有副本,在这个环境中你可以安装私有的包,而且不会影响系统中安装的全局的解释器。处理和函数之间关系的程序称为路由。例如在请求开始时,我们需要创建数据库连接或认证发起请求的用户。

几天前和同事一起喝酒,大家谈到为什么开始读书这件事。这里所说的读书不是专业的书籍,而是一些闲书。结果发现原来我们开始读书的原因很功利。都是因为生活中遇到了困惑,希望在书中找到答案。

人就是这样,即便在书中找不到答案。在看书的过程中发现,这个世界上居然有很多人是和我一样的。我解决不了的问题居然困扰了很多人。当从内而外,推己及人,发现这是一个外部世界普遍的问题,而不是自己本身的能力、性格和承受能力的问题,这时就会相对轻松,至少为自己的偷懒找到了借口。按照罗胖曾经说过的“其实人大多数时候没有自己的观点,在人生某一个阶段的观点,不过是对现状的解释罢了”

当然说到这里,我自然已经过了那个功利的阶段。因为随着你读书越多、思考越多、对世界的了解越多,会发现你所面对的未知领域越来越大,而且没有边界。转而因为兴趣读书,似乎才能带来愉快的体验。

Flask Web 开发实战笔记 安装和使用虚拟环境

虚拟环境是Python解释器的一个私有副本,在这个环境中你可以安装私有的包,而且不会影响系统中安装的全局的解释器。
另外一个好处是,不需要管理员权限。

虚拟环境使用第三方实用工具virtualenv创建

安装方式略。使用virtualenv创建虚拟环境,虚拟名称一般为env,当然你可以选择不同的名字

#创建虚拟环境
virtualenv env
#创建完成后,env目录下出现如下目录
Include/  
Lib/  
Scripts/  
pip-selfcheck.json  
tcl/

激活虚拟环境(windows下)

venvScriptsactivate

激活后,提示符变成(venv)$

#激活后就可以直接执行语句,并通过浏览器http://127.0.0.1访问
(venv)$ python hello.py
一个完整程序的结构
#初始化
from flask import Flask
app = Flask(__name__)

#路由和视图函数
@app.route("/")
def index():
    return "

Hello World!

" #启动服务器 #debug=True 启动调试模式 #如果我们想要其他人访问,可以使用app.run(host=0.0.0.0.0,debug=True) if __name__ == "__main__": app.run(debug=True)

flask类的构造只有一个必须指定的参数,即程序主模块或包的名字。在大多数程序中,Python的__name__变量就是所需的值。

处理URL和函数之间关系的程序称为路由。

在Flask程序中定义路由最简便的方式,是使用程序实例提供的app.route修饰器。

紧随修饰器之后的函数,我们称之为视图函数[index()]。

程序和请求上下文

Flask从客户端收到请求时,要让视图函数能够访问一些对象,这样才能处理请求。
那么要想让视图函数能够访问对象,一个显而易见的方法是将其作为参数传入视图函数。
如你所想,这样会导致每个视图函数都要增加一个参数。并且考虑到,如果视图函数还需要访问其他对象,那么情况可能更糟。所以,Flask使用上下文临时的把某些对象变为全局可访问。

from flask import request

@app.route("/")
def index():
    user_agent= request.headers.get("User-Agent")
    return "

Your browser is %s

" % user-agent

Flask上下文分为程序上下文和请求上下文

Flask在分发请求之前激活程序和请求上下文,请求处理结束后再将其删除。

程序上下文被推送之后,就可以在线程中使用current_app 和 g 变量

请求上下文被推送后,就额可以使用request和session变量。

请求钩子

有时在处理请求之前或之后执行代码会很有用。例如在请求开始时,我们需要创建数据库连接或认证发起请求的用户。为了避免在每个视图中都使用重复的代码,Flask提供了注册通用函数的功能。

请求钩子使用修饰器实现。Flask支持以下4中钩子

before_first_request: 注册是一个函数,在处理第一个请求之前运行

before_request : 注册一个函数,在每次请求之前运行

after_request: 注册一个函数,如果没有未处理的异常抛出,在每次请求之后运行。

teardown_request:注册一个函数,即使有未被处理的异常抛出,也在每次请求之后运行。

在请求钩子函数和视图函数之间共享数据一般使用上下文全局变量g
例如,before_request处理程序可以从数据库中加载已登录用户,并将其保存到g.user中。
随后调用视图函数时,视图函数在使用g.user获取用户。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/38217.html

相关文章

  • 我的第一本 gitbook: Flask Web 开发笔记

    摘要:月份发布了第版,收到不少网友的良好建议,所以又抽空进行了完善,当然也拖了不少时间。本书主要介绍的基本使用,这也是我一开始在学习过程中经常用到的。第章实战,介绍了如何开发一个简单的应用。声明本书由编写,采用协议发布。 showImg(https://segmentfault.com/img/remote/1460000007484050?w=200&h=152); 书籍地址 head-f...

    KevinYan 评论0 收藏0
  • Python学习笔记:Web后端开发一览

    摘要:试想,在多线程服务器中,多个线程同时处理不同客户端发送的不同请求时,每个线程看到的对象必然不同。多线程服务器会创建一个线程池,再从线程池中选择一个线程用于处理接收到的请求。 框架 Django flask flask是一个轻量的web开发应用示例开发一个小应用 from flask import Flask app = Flask(__name__) @app.route(/) d...

    DrizzleX 评论0 收藏0
  • Python3网络爬虫实战---6、Web库的安装:Flask、Tornado

    摘要:在本书中用到的一些服务程序主要有。本节来分别介绍它们的安装方法。的安装是一个轻量级的服务程序,简单易用灵活,在本书中我们主要用它来做一些服务,本节我们来了解下它的安装方式。相关链接官方文档安装执行完毕之后即可完成安装。 上一篇文章:Python3网络爬虫实战---5、存储库的安装:PyMySQL、PyMongo、RedisPy、RedisDump下一篇文章:Python3网络爬虫实战-...

    yeyan1996 评论0 收藏0
  • Web 开发学习笔记(1) --- 搭建你的第一个 Web Server

    摘要:简介是一个轻量级的框架如果要学习开发非常适合作为我们学习的起点通过接下来的这一些列的博客我们将学习如何利用以及其他工具搭建一个简单的网站开发环境命令如下第一个首先我们创建一个文件夹并在其中新建一个文件接着我们打开按照的示例 简介 Flask 是一个轻量级的 Web 框架, 如果要学习 Web 开发, Flask 非常适合作为我们学习的起点. 通过接下来的这一些列的博客, 我们将学习如何...

    calx 评论0 收藏0

发表评论

0条评论

罗志环

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<