Flask之初识

Flask是......不用我介绍了,你既然已经来看这篇博客了,我想你对Flask的熟识程度已经达到一种级别了。

接下来我们一起学习Flask。

一、快速开发一个web页面

from flask import Flask
app = Flask(__name__)


@app.route('/hello/')
def index():
    return 'hello i use python'


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

上述代码就是展现一个最简单的web应用。

关于上述代码分为三个步骤:

① 注册一个Flask的是对象

② 定义一个视图函数,并使用装饰器进行装饰

③ 调用run()方法

关于上述代码我向提醒大家的是关于装饰器中的参数问题

问题:@app.route('/hello/')与@app.route('/hello')写法的区别???

如果使用的是@app.route('/hello/'),在 chrome 浏览器中输入http://127.0.0.1:5000/hello/或者http://127.0.0.1:5000/hello均可以返回hello i use python。那么两者的真正区别是什么呢?使用http://127.0.0.1:5000/hello访问的时候,chrome 浏览器会先向http://127.0.0.1:5000/hello发一个请求,会返回301状态码,然后再向http://127.0.0.1:5000/hello/发送请求返回hello i love python。

如下图所示:

如果使用的是@app.route('/hello'),那么在 chrome 浏览器中输入http://127.0.0.1:5000/hello/将会报错,如下图所示:

那么现在你已经明白了上述两种写法的区别了,所以更在开发中使用哪一种写法,需要自己决定。

关于路由的注册官方建议我们使用上述装饰器的方式,那么就肯定有另外一种方式可以实现路由的注册。我们一起来看源码。如图所示:

可以看到装饰器route的本质是调用了add_url_rule方法来实现路由的注册。

from flask import Flask
app = Flask(__name__)


# @app.route('/hello')
def index():
    return 'hello i use python'


app.add_url_rule('/hello', view_func=index)


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

通过调用add_url_rule方法同样可以注册相关路由。

add_url_rule方法需要调用的参数如下所示:

def add_url_rule(self, rule, endpoint=None, view_func=None,
                     provide_automatic_options=None, **options):
    pass

到此为止,需要注意的地方都已经展示清楚了。

二、修改了代码之后如何才能自动重启服务器呢?

在此之前注意到每次修改了代码都需要手动重启,才能让修改过的代码重新编译。

难道就没有自动重新编译的功能么?当然有,只需要简单的的配置一个参数即可,代码如下所示:

from flask import Flask
app = Flask(__name__)


@app.route('/hello')
def index():
    return 'hello i use python'


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

只需要在run()中传入debug=True就能够实现修改代码重新启动。

但是你认为在run()中传入debug=True是合适的么?

也许你听说过:要把代码放置合适的位置。那么什么是合适的位置呢?这需要一定的代码积累才能够真正的体会这句话的含义。

如果说实在开发环境中,在run()中传入debug=True没有问题,可是在生产环境中呢?

由于你需要在开发环境与生产环境中保持代码的镜像关系,此时在run()中传入debug=True是不合适的。

那么该如何解决这个问题呢?

使用独立的配置文件来解决这个问题。

我们需要新建一个settings.py的文件来放置一些需要经常变动的数据,如下所示:

# _*_coding:utf-8_*_

# 该模块用来定义开发过程需要的常量

# *********注意***********
# 定义的常量名称必须大写
# ***********************

DEBUG = True

也许你已经注意到了上述文件中有这样一句话:定义的常量名称必须大写。

如果把常量名称改为小写会出现什么样的情况呢?有兴趣的同学可以去尝试一下。

已经定义好了settings.py文件,那么该如何使用这个文件呢?

Flask已经为我们开放了相关的API,你只需要调用相关的API即可。

如下所示:

# _*_ coding;utf-8_*_
from flask import Flask
app = Flask(__name__)
# 调用配置文件的相关API
app.config.from_object('config')

@app.route('/hello')
def index():
    return 'hello i use python'


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

以上,只是Flask的入门的介绍。

在最后,我想抛出一个问题:你真的理解 if __name__ == '__main__' 的作用么?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值