Flask奇妙探索之旅(一)之Hello,World
前言
本教程来自The Flask Mega-Tutorial的译本,选用的Makedown编辑器为REMARKABLE,实验环境为Ubuntu18.04,Python版本为 3.7.1,由于才开始接触Makedown语法,行文风格参考了此文翻译,在此向译者致敬。
安装Python的过程被略去,若你还没有安装Python,此处建议安装Anaconda。
安装Flask
Python有公共仓库来托管第三方的包,我们可以通过pip3
安装,基本格式如下:(注:若ubuntu中同时有Python2.x和3.x,pip
默认为Python2安装,要为Python3安装需使用pip3
)
pip3 install <package-name>
在此涉及到版本问题所引起的故障,可以参考第一行Python代码写的此篇文章,通过使用虚拟环境可以解决这个问题,我们先创建项目目录,将此应用命名为microblog:
mkdir microblog
cd microblog
在Python3中创建此虚拟环境的命令为:
python3 -m venv venv
若提示缺少依赖,在Ubuntu中可以使用此命令安装依赖sudo apt-get install python3-venv
,命令执行成功的话会在microblog
目录下生成一个venv
文件夹,首先查看自己的Python是否包含了virtualenv
,通过使用此命令可以来确认:
virtualenv venv
若提示错误则需下载virtualenv,创建完后可以使用以下命令激活:
source venv/bin/activate
前面出现(venv)
表示虚拟环境激活,在虚拟环境中安装Flask
(venv) $ pip3 install flask
测试可以通过导入模块来进行,打开解释器>>> import flask
没有抛出异常即为成"
"Hello,World"Flask应用
Flask网站提供了应用实例,让我们从Hello,World开始这段奇妙之旅,在此先理解一下Python中module
和package
moduel
:一个eg.py即为module,eg为模块名(注:在C中一般称为lib
,但在Python中,一般称为moduel
)
package
:一个有层次的文件目录,一定含有__init__.py
,定义了由一组moduel
组成的应用环境。
我们创建一个名为app
的package
来存放应用,创建__init__.py
来使文件夹变为package
。
__init__.py
:控制着包的导入行为,目的是包含不同运行级别的包的可选的初始化代码,用以自动加载子模块,具体用法可以参考Python3-cookbook。
在__init__.py
中输入如下代码:
from flask import Flask
app = Flask(__name)
from app import routes
此处app = Flask(__name)
中创建了Flask的实例,参数__name__,告诉了falsk了Application的名字,官方文档中有:If you are using a single module,__name__
is always the correct value. If you however are using a package, it’s usually recommended to hardcode the name of your package there.
在Flask中,应用程序路由的处理逻辑被编写为Python函数,称为视图函数。 视图函数被映射到一个或多个路由URL,以便Flask知道当客户端请求给定的URL时执行什么逻辑。在app/routes.py中 实现了视图函数
from app import app@app.route('/')
@app.route('/index')
def index():return "Hello, World!"
在Python中@符号称为装饰器的语法糖,关于装饰器更详细的了解可以参考流畅的Python,@app.route
装饰器将路径/
和/index
关联到index
函数,这样在访问这两个URL时将调用此函数并将返回值作为响应传递给浏览器。
要完成应用程序还需要在microblog
目录下创建一个名为microblog.py
的脚本,通过此来导入应用实例:
from app import app
此处第一个app
为包名(包含文件的__init__.py文件夹),第二个是包中导入app对象,在设置完FLASK_APP
环境变量就可以运行第一个程序了,命令如下:
export FLASK_APP=microblog.py
用此种方法在每次运行之前都得设置环境变量,通过设置可以只会在运行flask命令时自动注册生效的环境变量首先安装python-dotenv
pip3 install python-dotenv
安装后在microblog
目录下新建一个.flaskenv
的文件,内容是:
FLASK_APP=microblog.py
在虚拟环境中,通过运行flask run
就成功运行了构筑的第一个Web应用了。通过输出可以看到服务器运行在127.0.0.1上,使用127.0.0.1:5000
就可以看到构筑的Hello,World页面了。
补充
为了更好地理解from app import app
,下面对实例使用my_app进行重命名,则在__init__.py
中代码修改:
from flask import Flask
my_app = Flask(__name__)from app import routes
在此处创建的对象为my_app,这样就可以来进行区分了,相应的在microblog.py
和routes.py
也得进行更改
#microblog.py
from app import my_app #routes.py
from app import my_app@my_app.route('/')
@my_app.route('/index')def index():return("月亮与六便士")
运行结果如图:
Flask奇妙探索之旅(一)之Hello,World相关推荐
- Flask奇妙探索之旅(二)之模板
本文参考来源The-Flask-Mega-Tutorial-zh在翻译的基础上加进了个人的部分理解,仅做个人的学习记录之用. 上一节我们使用Flask构建了自己的第一个Web应用,通过在虚拟环境运行f ...
- 【花雕学AI】10:一位户外行者和一款人工智能AI搜索引擎的奇妙探索之旅
<花雕学AI>是一个专栏,由驴友花雕撰写,主要介绍了人工智能领域的多维度学习和广泛尝试,包含多篇文章,分别介绍了ChatGPT.New Bing和Leonardo AI等人工智能应用和技术 ...
- C语言探索之旅 | 第一部分第三课:你的第一个程序
作者 谢恩铭,公众号「程序员联盟」. 转载请注明出处. 原文:https://www.jianshu.com/p/c73fecacd006 <C语言探索之旅>全系列 内容简介 前言 控制台 ...
- C++ 探索之旅 | 第一部分第一课:什么是 C++
-- 作者 谢恩铭 转载请注明出处 <C++探索之旅>全系列 内容简介 开宗明义 什么是C++ 什么是程序 编程语言 C++与其他语言的比较 C++的历史 C++经典书籍 总结 第一部分第 ...
- 【C++探索之旅】开宗明义+第一部分第一课:什么是C++?
内容简介 1.课程大纲 2.第一部分第一课:什么是C++? 3.第一部分第二课预告:C++编程的必要软件 开宗明义 亲爱的读者,您是否对C++感兴趣,但是C++看起来很难,或者别人对你说C++挺难的, ...
- C++探索之旅 | 第一部分第一课:什么是C++
作者 谢恩铭,公众号「程序员联盟」(微信号:coderhub). 转载请注明出处. 原文:https://www.jianshu.com/p/a8c3a44f57ef <C++探索之旅>全 ...
- 幻影机器人庄园讲解员_探索之旅——莘城海粟幼儿园秋游活动
原标题:探索之旅--莘城海粟幼儿园秋游活动 美丽的金秋时节, 是大自然赋予我们取之不尽的源泉. 秋天的绚丽与多姿, 已成为孩子探索与发现的最美时节, 于是,孩子们最盼望的秋游开始啦! 莘城海粟幼儿园 ...
- Linux 探索之旅 | 第二部分第一课:终端 Terminal,好戏上场
-- 作者 谢恩铭 转载请注明出处 内容简介 第二部分第一课:终端Terminal,好戏上场 第二部分第二课预告:命令行,世界尽在掌握 终端Terminal,好戏上场 上一课 Linux探索之旅 | ...
- 【Linux探索之旅】第二部分第五课:用户和权限,有权就任性
内容简单介绍 1.第二部分第五课:用户和权限,有权就任性 2.第二部分第六课预告:Nano,刚開始学习的人的文本编辑器 用户和权限.有权就任性 今天的标题也挺任性的啊,虽说小编是一个非常本分的人(真的 ...
最新文章
- jni android 参数 字符串 jstring,2.4.5 jstring介绍
- 前台页面进行图片上传判断
- 小程序真的能帮商家挣到钱吗
- 环境变量_配置JAVA环境变量
- 《走遍中国》珍藏版(十)
- JavaScript数组快速入门
- 3. redis的超时,事务,watch
- DatePicker 和 DatePickerDialog的基本使用方法
- js的深拷贝的理解和实现
- 中国电信与阿里巴巴签署全面战略合作协议
- access更新查询非汉族加分_计算机二级Access:如何创建更新查询
- 教你轻松解决CSRF跨站请求伪造攻击
- Sqlmap使用教程【个人笔记精华整理】
- 如何在浏览器中禁用和启用Cookie?
- 张亮:Sharding-Sphere成长记
- 批量生成奖状的简单程序
- java求圆的面积和周长
- [4G5G基础学习]:流程 - 4G LTE 接入网的随机接入流程
- IDEA社区版tomcat配置
- 泛型的基础 装箱拆箱