Python■Python web框架 Flask( 三 )
成功创建和激活了虚拟环境之后 , 你可以安装Flask了 , 命令如下:
想要验证安装是否成功 , 可以打开Python解释器 , 并用import语句来导入它:
如果语句没有报错 , 那么恭喜你 , Flask安装成功了!
\"Hello World\" Flask应用Flask网站展示了一个仅有五行代码的简单示例应用程序 。而我会告诉你一个稍微更复杂的例子 , 它将为你编写更大的应用程序提供一个很好的基础结构 。
应用程序是存在于包中的 。在Python中 , 包含__init__.py文件的子目录被视为一个可导入的包 。当你导入一个包时 , __init__.py会执行并定义这个包暴露给外界的属性 。
那就创建一个名为app的包来存放整个应用吧 。 记得切换到microblog目录下 , 并执行如下命令:
并在其下创建文件__init__.py , 输入如下的代码:
上面的脚本仅仅是从flask中导入的类Flask , 并以此类创建了一个应用程序对象 。传递给Flask类的__name__变量是一个Python预定义的变量 , 它表示当前调用它的模块的名字 。 当需要加载相关的资源 , 如我将在第二章讲到的模板文件 , Flask就使用这个位置作为起点来计算绝对路径 。代码的最后 , 应用程序导入尚未存在的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中的第一个视图函数的代码:
这个视图函数简单到只返回一个字符串作为问候用语 。函数上面的两个奇怪的@app.route行是装饰器 , 这是Python语言的一个独特功能 。装饰器会修改跟在其后的函数 。装饰器的常见模式是使用它们将函数注册为某些事件的回调函数 。在这种情况下 , @app.route修饰器在作为参数给出的URL和函数之间创建一个关联 。在这个例子中 , 有两个装饰器 , 它们将URL /和/index索引关联到这个函数 。这意味着 , 当Web浏览器请求这两个URL中的任何一个时 , Flask将调用该函数并将其返回值作为响应传递回浏览器 。 这样做是为了在运行这个应用程序的时候会稍微有一点点意义 。
要完成应用程序 , 你需要在定义Flask应用程序实例的顶层(译者注:也就是microblog目录下)创建一个命名为microblog.py的Python脚本 。它仅拥有一个导入应用程序实例的行:
还记得两个app实体吗? 在这里 , 你可以在同一句话中看到两者 。Flask应用程序实例被称为app , 是app包的成员 。 from app import app语句从app
推荐阅读
- Python之王|Pandas数据合并与拼接的5种方法
- SOWORD科技言|为什么NodeJS是创业公司的首选?了解用于Web开发的NodeJS
- 千锋程序猿|web前端为何会如此受到青睐呢?
- 流光年华|优势叠加打好科技创新“组合拳”上海市科委与市科协签署战略合作框架协议
- 「javascript」为什么NodeJS是创业公司的首选?了解用于Web开发的NodeJS
- 环球科技在此|Java自动化测试框架(TestNG)——异常测试
- 产业气象站|学完python可以从事哪些行业?
- docker■面向Web开发人员的Docker简介,它满足了我对Container的需求
- 『Google』华为火力全开,鸿蒙生态迎来5.0框架,7万亿美国巨头猝不及防
- 『web开发』你们常用的web开发工具都有什么?分享我常用的5大Web开发工具
