Flask 快速入门

Flask开发环境配置
Flask快速入门
Flask实践Step by Step -- 'Hello World'
Flask实践Step by Step -- 模板
Flask实践Step by Step -- Web表单

假设你已经安装了Flask,如果没有安装请参考 Flask开发环境配置

小程序

Flask小程序

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
  return "Hello World!"

if __name__ == '__main__':
  app.run()

保存为hello.py,但是最好不要保存为flask.py,这样会和Flask本身有冲突
然后就可以再浏览器中输入 http://127.0.0.1:5000,就可以看到 Hello World!
分析一下上面这段代码:

  1. 引入Flask类
  2. 创建了一个Flask的实例
  3. 使用了一个装饰器,使得访问URL时,触发对应的方法
  4. 访问方法返回相关的内容
  5. 运行run方法
    停止 Server,使用 Ctrl-C

调试模式

上面的run()方法会启动一个本地的开发服务器,但是你每次修改代码之后,就需要重新启动这个服务器
这样的开发体验不是很好,Flask提供一个更好的方式,在开发时,我们可以使用调试模式,这样每次如果
有代码修改服务器就会自动重新加载,有两种方式打开调试模式

  1. 设置对应的flag值为true
app.debug = True
app.run()
  1. 在执行run方法时,传入相应的参数
app.run(debug=True)

这两种方式的效果是一样的

但是在部署的环境中,不建议使用开发者模式,这样看会有潜在的风险,可能会执行一些恶意代码

URL路由

现在的web应用都有很简洁漂亮的URL,这样的URL更便于人们记忆,尤其是在现在移动设备比较流行
的时代,这样更方便在移动端访问
在上面的代码中我们可以看到,使用了route()的装饰器,来绑定一个方法和对应的URL

@app.route('/')
def index():
  return "Index page"

@app.route('/hello')
def hello():
  return "Hello World!!"

但是还可以根据不同的规则生成一些动态的URL

变量规则

可以在URL中添加变量,需要用到 <variable_name> 这种方式,对应的方法需要接受这个参数
也可以在变量中加入不同的规则,具体的写法是 <converter:variable_name>

@app.route('/user/<usrname>')
def show_user_profile(username):
  return 'User %s' % username

@app.route('/post/<int:post_id>')
def show_post(post_id):
  return 'Post %d' % post_id

转换器包括:

类型 描述
string (默认) 文本不接受斜线
int int型数字
float 浮点型数字
path 文本可以包含斜线
any
uuid uuid文本

URL唯一/重定向行为
Flask的URL的规则是基于Werkzeug的路由规则,受到Apache和早期HTTP Server的影响

@app.route('/projects/')
def projects():
  return 'The project page'

@app.route('/about')
def about():
  return 'about page'

中两个路由看起来没有太大区别,第一个路由结尾有/,第二个路由结尾没有/,在访问时会有什么影响呢
第一种情况,如果访问时没有结尾的/,Flask会重定向到对应的有/的方法
第二种情况,如果访问时结尾带/,那么就会报404 'Not Fount'的错误

HTTP方法

HTTP协议有不同的方法供URL访问,默认提供是GET方法,但是可以在路由中通过参数来改变

@app.route('/login',methods=['GET','POST'])
def login():
  if request.method == 'POST':
    do_the_login()
  else :
    show_the_login_form()

这个login方法,两种方式都可以访问

  • GET
  • POST
  • HEAD
  • PUT
  • DELETE
  • OPTIONS

静态文件

在动态网页中也需要静态文件,通常是CSS和JavaScript文件,在Flask中只需创建一个 static
的文件夹,然后将文件放进去即可,可以使用下面的方法生成静态文件的路由

url_for('static',filename='style.css')

渲染模板

开发人员是不希望通过python来写HTML文件的,这样太繁琐了,在Flask中提供了Jinja2的引擎来
渲染HTML模板
渲染模板只需要 render_template()方法即可,你只需要将需要渲染的文件名传入即可

from flask import render_template

@app.route('/hello/')
@app.route('/hello/<name>')
def hello(name=None):
  return render_template('hello.html',name=name)

Flask会在templates文件夹中对应的文件,两种情况的文件的分布如下:

  1. moudle

2.package

访问请求数据

Context

Request对象

文件上传

Cookies

重定向和错误

关于响应

会话

Message Flashing

日志

WSGI中间件

部署

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

推荐阅读更多精彩内容