Python3 Flask框架——第一次使用

Flask是一个轻量级的Web框架,它只给我们提供了必须的路由和渲染,其他的功能我们可以自由选配,所以Flask的灵活度非常高,且耦合度低,可以满足我们快速开发的需求;

接下来我们看下最最最基本的框架结构:

from flask import Flask
'''
在这里强调一下为什么使用的是from flask import Flask,而不是from flask import *?
首先如果这么写的话,可阅读性就会比较差,别人不知道你需要导入的是什么,也不知道对象是从哪里导入到的;
其次,import * 的导入取决于相关库的定义,如果没有将方法包含进去,import * 是不会导入的,
所以我们在后面的开发中,最好使用的时候明确包名
'''

app = Flask(__name__)    # 创建flask应用对象
'''
__name__ 表示的是当前模块的名字,即文件的名字,如果程序运行是从这个文件启动的,那么__name__就是main,如果是从其他模块导入的,
那么就是该模块的文件名
flask以这个模块所在的目录为总目录,默认这个目录的static目录为静态目录,templates为模板目录
如果Flask(目录名)指定错误,没有找到的话,flask就会以这个文件所在的目录为根目录,也就是说即使app=Flask('')也可以运行,
但是不利于后面的维护

'''

@app.route('/')        # 使用装饰器绑定路由,将路由映射到视图函数hello
# 什么是路由?就是说我们通过url访问的地址(注意,我们访问不是基于本地文件地址来的,而是通过我们定义的路由路径来的,后面会详细的介绍)
def hello():           # 定义视图函数,就是说这个路由路径当访问的时候该做些什么事情
    return 'hello'     # 在页面上输出“hello”

if __name__ == '__main__':    # 这个就不介绍了,就是判断程序是否从这个文件启动
    app.run()    # run()方法是提供给我们进行本地调试的方法

现在我们运行一下,本机地址默认是127.0.0.1,默认端口号是5000,我们可以通过下面蓝色的地址在浏览器中访问,我刚才已经访问了一次,所以下面会有日志打印出来,什么时候通过什么方式对页面进行了访问:

上面说了,我们的访问地址不是通过本地文件地址来访问的,接下来我们就看下Flask()的几个属性:

app = Flask(__name__,        # 在创建flask应用对象的时候,还可以初始化参数
            static_url_path='/python',    # 访问静态资料的url前缀,默认是static
            static_folder='static',       # 静态文件目录,默认就是static
            template_folder='templates',  # 模板文件目录,默认就是templates
            )

就是说我们在访问页面的时候需要分两种情况,一种是这个url指向的是一个静态页面,另一种就是指向的是视图函数;下面我们假设有这种情况,我们定义的路由就是:@app.route('/index.html'),这种情况我们要怎么区分到底是上面的哪一种?
static_url_path就帮我们解决了这个问题,但凡我们通过url访问时以static_url_path定义的路径开头的,我们都暂且认为它是个静态页面,就会到static_folder定义的路径下寻找;
默认访问静态文件的前缀就是static,而我们一般约定俗称也是将静态页面放在static文件夹下面,所以这里会造成一个混淆,静态文件目录是可以由我们指定的,访问静态页面的url前缀也可以修改;
总结:我们在浏览器进行访问的时候,url地址与文件的实际存放地址是没有绝对的关联的,指定它的是static_url_path,文件的实际存放地址在static_folder中指定。

 

接下来我们来看下flask参数的配置方法,比如我现在需要页面启动的时候进入调试模式:
我们先来看下默认没有开启调试模式的时候是什么样的:

  1. 使用配置文件的方式配置参数:
    1)首先我们在目录下创建一个名为config.cfg的配置文件
    2)然后我们在这个文件中写上:
    3)回到代码中,我们将配置文件导入:
  2. 使用对象配置参数:
    1)首先我们要写一个类,将所有的参数都写在里面:
    class config():
        DEBUG = True

    2)然后我们在代码中进行设置:

我们可以将配置信息看做是以字典的形式进行存取,在配置文件中我们不仅可以配置Flask使用的配置信息,还可以增加我们后面可能会使用到的信息,可通过app.config['键名']的方式提取出来;

 

接下来我们看下app.run()的参数:
在默认情况下,app.run()运行的地址是127.0.0.1的本地地址,我们计算机都有一个IP地址,那如何通过IP地址对网站进行访问呢?

app.run(host='本机IP',port=端口)

我们可以通过上面的方法对访问地址进行修改,但是修改完毕之后,127.0.0.1就没办法使用了,这时我们可以将host设置成0.0.0.0,这样不管是本机IP,还是本地地址都可以访问了;

 

我们在最开始的代码中创建了一个路由,一个Web肯定是不止一个路由的,那么我想要查看所有的路由信息该怎么办呢?

print(app.url_map)


我们可以看得见现在已经将所有的路由信息全部打印来了,我们只需要看第一行:
'/' 指的就是路由的名字
(GET,......) 指的就是允许请求的方式
hello 指的就是指向的视图函数

上面我们说到了页面的请求方式,从上面我们就可以看见默认情况下使用的是GET请求,那么如果我想通过POST请求来获取信息,我该怎么设置呢?

@app.route('/',methods = ['GET','POST'])
def hello():
    return 'hello'


我们可以在路由绑定路由的时候设置methods参数,设置页面允许的请求方式,我们发现现在已经允许我们使用'GET'和'POST'请求了;

当同一个路由对应多个视图函数的时候,如果均使用默认配置,那么当我们访问的时候,能够访问到的只有第一个,我们可以通过不同的请求方式来实现不同视图函数的实现;
那么如果多个路由路径对应一个视图函数呢?

@app.route('/index')
@app.route('/',methods = ['GET','POST'])
def hello():
    return 'hello'

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值