我们按照官方文档来,本篇文章只要介绍:
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时,下边函数会执行
.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__)
.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) # 具体为什么这样配置,不太清楚,以后在研究下
.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
app.run()
3、路由
使用route( ) 路由装饰器把url和视图函数作一个映射,也就是说当用户输入一个请求网址时,flask要执行哪一个视图函数:
route('/') # 请求http://localhost:5000 执行下边视图函数.
def fn():
return 'lxc'
route('/active') # 请求http://localhost:5000 执行下边视图函数.
def fn():
return 'active'
(2)动态参数:
给路由添加动态参数,如下:
# 请求http://localhost:5000/动态id 会执行下边视图函数
.route('/active<activeid>')
def fn(activeid):
print(type(activeid)) # <class 'str'> 此参数是字符串需要转化
return 'activeid是:%d' % int(activeid)
上边代码,参数是字符串类型的数字,需要转化为数字,但flask参数可以设置规则:
变量规则:
flask中动态路由参数可有以下几种规则:
—— string:接收任何不包含斜线的文本(限制参数类型的)
—— int:接受正整数(限制参数类型的)
—— float:接受正浮点数(限制参数类型的)
—— path:类似于string,但可以包含斜线(会将斜线认为是一个字符)
# 数字类型的参数
.route('/active/<int:activeid>')
def fn(activeid):
return 'activeid是:%d' % activeid
# 字符串类型的参数
.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__)
.route('/')
def fn1():
print(url_for('fn')) #/active 输出指定函数对应的url
return 'lxc'
.route('/active')
def fn():
return 'activeid'
上边代码,
1、首先要引入url_for( ) 反转函数
2、 url_for( ) 反转函数参数必须是字符串类型的(初学者很容易出错的地方!!!!!!!!!!!!!!!!)
作用:
url_for( ) 经常用在重定向上边:
from flask import Flask,url_for,redirect
app = Flask(__name__)
.route('/')
def fn1():
return redirect(url_for('fn'))
.route('/active')
def fn():
return '这是重定向页面'
上边代码,使用重定向需要引入 redirect模块,当用户访问根路径(http://localhost:5000)时,会自动跳转到 http://localhost:5000/active 页面;
使用url_for()反转函数有几个优点:
1、当重定向路径修改时,不需要修改redirect( ) 中的代码。
2、url_for( ) 创建会为你处理特殊字符的转义和 Unicode 数据,比较直观。
补充:
重定向原理: