我们按照官方文档来,本篇文章只要介绍:

1、引入Flask实例

2、debug模式

3、路由、路由中的变量规则

补充3.1 路由的另一种注册方式

4、url_for()反转函数

补充5、重定向原理:

 

1、引入flask实例

from flask import Flask # 引入flask
app = Flask(__name__) # 创建flask实例

#下边装饰器作用是:使用route()装饰器告诉flask触发函数的url,
#也就是当用户输入http://localhost:5000时,下边函数会执行
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__': # 判断是否是主模块,之前文章有讲过
app.run() # 运行app.run()会一直监听指定的端口, 对收到的request运行app生成response并返回

在浏览器中打开 ​​http://127.0.0.1:5000/​​ ,就可以看到 Hello World! 字样。

 

2、调式模式

打开调试模式,每次修改程序中的代码,都不需要手动重启服务器,它会自动重启,并且程序出错时,会在页面显示报错信息,可以具体到哪一行。。。

开启调试模式有两种方法:

(1) app.run(debug=True)

from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
app.run( debug=True )

   (2)   新建一个配置文件 config.py,在里边定义:DEBUG = True ,在主模块中,引入配置文件:

# config.py
DEBUG = True
from flask import Flask
import config # 引入配置文件 config
app = Flask(__name__)
app.config.from_object(config) # 具体为什么这样配置,不太清楚,以后在研究下
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
app.run()

 

3、路由

使用route( ) 路由装饰器把url和视图函数作一个映射,也就是说当用户输入一个请求网址时,flask要执行哪一个视图函数:

@app.route('/') # 请求http://localhost:5000 执行下边视图函数
def fn():
return 'lxc'
@app.route('/active') # 请求http://localhost:5000 执行下边视图函数
def fn():
return 'active'

  (2)动态参数:

给路由添加动态参数,如下:

# 请求http://localhost:5000/动态id   会执行下边视图函数
@app.route('/active<activeid>')
def fn(activeid):
print(type(activeid)) # <class 'str'> 此参数是字符串需要转化
return 'activeid是:%d' % int(activeid)

上边代码,参数是字符串类型的数字,需要转化为数字,但flask参数可以设置规则:

变量规则:

flask中动态路由参数可有以下几种规则:

——  string:接收任何不包含斜线的文本(限制参数类型的)

——  int:接受正整数(限制参数类型的)

——  float:接受正浮点数(限制参数类型的)

——  path:类似于string,但可以包含斜线(会将斜线认为是一个字符)

# 数字类型的参数
@app.route('/active/<int:activeid>')
def fn(activeid):
return 'activeid是:%d' % activeid

# 字符串类型的参数
@app.route('/active/<string:activeid>')
def fn(activeid):
return 'activeid是:%d' % activeid

··· ···

3.1、路由的另一种注册方式:

(1)使用  app.add_url_rule ( '/ ' , view_func = viewFunction

参数一:路径

参数二:等号后边是视图函数的名字

(2)在基于类的视图中 —— 即插视图,必须使用这种方式来注册路由!!!其实使用装饰器来注册路由的底层是使用 add_url_rule 这种方式来注册的 ,只不过 flask 把add_url_rule 做了一层封装,封装成了一个装饰器,使用起来更加方便优雅而已!!! (可以查看下源码看下)

from flask import Flask
app = Flask(__name__)
def fn():
return "lxc"
app.add_url_rule('/',view_func=fn)
if __name__ == '__main__':
app.run(debug=True)

 

4、反转函数 url_for( )

flask官网:url_for( )函数用于构建执行函数的URL,它把函数名称作为第一个参数;通俗来讲,url_for()函数可以输出指定函数对应的url,(指定函数写在括号中)举个例子: 

from flask import Flask,url_for # 引入url_for函数
app = Flask(__name__)

@app.route('/')
def fn1():
print(url_for('fn')) #/active 输出指定函数对应的url
return 'lxc'

@app.route('/active')
def fn():
return 'activeid'

 上边代码,

1、首先要引入url_for( ) 反转函数

2、 url_for(  ) 反转函数参数必须是字符串类型的(初学者很容易出错的地方!!!!!!!!!!!!!!!!)

作用:

url_for( ) 经常用在重定向上边:

from flask import Flask,url_for,redirect
app = Flask(__name__)

@app.route('/')
def fn1():
return redirect(url_for('fn'))
@app.route('/active')
def fn():
return '这是重定向页面'

上边代码,使用重定向需要引入 redirect模块,当用户访问根路径(http://localhost:5000)时,会自动跳转到 http://localhost:5000/active 页面;

使用url_for()反转函数有几个优点:

1、当重定向路径修改时,不需要修改redirect( ) 中的代码。

2、url_for( )  创建会为你处理特殊字符的转义和 Unicode 数据,比较直观。

补充:

重定向原理:

python-web框架Flask-(二)使用Flask_flask