Flask学习之路(一)之Hello,World

前言

本教程来自The Flask Mega-Tutorial的译本,选用的Makedown编辑器为REMARKABLE,实验环境为Ubuntu18.04,Python版本为 3.7.1,由于才开始接触Makedown语法,行文风格参考了此文翻译,在此向译者致敬。


安装Python的过程被略去,若你还没有安装Python,此处建议安装Anaconda

安装Flask


Python有公共仓库来托管第三方的包,我们可以通过<code>pip3</code>安装,基本格式如下:(注:若ubuntu中同时有Python2.x和3.x,<code>pip</code>默认为Python2安装,要为Python3安装需使用<code>pip3</code>)


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中modulepackage

moduel:一个eg.py即为module,eg为模块名(注:在C中一般称为lib,但在Python中,一般称为moduel

package:一个有层次的文件目录,一定含有__init__.py,定义了由一组moduel组成的应用环境。

我们创建一个名为apppackage来存放应用,创建__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.pyroutes.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("月亮与六便士")

运行结果如图:


2019-03-27 22-14-04 的屏幕截图.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,122评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,070评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,491评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,636评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,676评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,541评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,292评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,211评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,655评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,846评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,965评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,684评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,295评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,894评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,012评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,126评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,914评论 2 355

推荐阅读更多精彩内容