一个网站是由多个页面组成,而每个页面的访问地址都不一样,这便需要对路由进行管理
默认访问位置,如果我们在路由中单独写个‘/’他访问的就是默认页面
例如:
from flask import Flask,render_template
app = Flask(__name__)
# 学了路由管理,可以有多个不同的界面
@app.route('/')
def hello_world():
t=render_template('index.html')
return '我是默认页面'
if __name__ == '__main__':
app.run()
注意:这个访问路径是:127.0.0:5000 这个就是默认访问的
再看下面这个
from flask import Flask,render_template
app = Flask(__name__)
# 学了路由管理,可以有多个不同的界面
@app.route('/xm1')
def head1():
return '我是页面一'
@app.route('/xm2')
def head2():
return '我是页面二'
if __name__ == '__main__':
app.run()
更多的时候,路由不是固定的,根据显示的不同页面,路由里面某些字段会发生变化
路由里面还可以带参数
from flask import Flask,render_template
app = Flask(__name__)
# 学了路由管理,可以有多个不同的界面
@app.route('/xm1/') # 参数传递
def head1(cs1):
# 函数里面接收参数
return '我是页面一,接收的参数是%s'%cs1
if __name__ == '__main__':
app.run()
当然也可以接收多个参数的,并且这里的参数是必须的多个参数是下面这样定义的,当然访问的时候,也需要每个参数之间用‘/’隔开
from flask import Flask,render_template
app = Flask(__name__)
# 学了路由管理,可以有多个不同的界面
@app.route('/xm1//') # 参数传递
def head1(cs1,cs2):
# 函数里面接收参数
return '我是页面一,接收的参数一是%s 参数二是:%s'%(cs1,cs2)
if __name__ == '__main__':
app.run()
参数也是有数据类型的,默认是字符类型,主要有以下几种数据类型
类型 |
作用 |
string |
默认的字符转换器,匹配不包含/的字符串 |
int |
接受并转换成整数 |
float |
接受并转换成浮点数 |
path |
匹配包含/的字符串 |
uuid |
接收uuid类型的字符串 |
from flask import Flask,render_template
app = Flask(__name__)
# 学了路由管理,可以有多个不同的界面
@app.route('/xm1///') # 参数传递
def head1(cs1,cs2,cs3):
# 函数里面接收参数
return '我是页面一,接收的参数一是%s 参数二是浮点型的:%f参数三是整形的他是:%d'%(cs1,cs2,cs3)
if __name__ == '__main__':
app.run()
注意:“:”号前后不要有空格,否则会报错。根据运行的截图,我们也可以看出这个转换器确实起到了过滤和转换的作用。使用转换器,可以让我们的路由处理更加严谨,
这里需要学习正则和装饰器方面的知识,我已经把前面忘了,,先暂留个坑
有的时候需要在一个页面上跳转到另一个页面,那就需要获取另一个页面的url路由地址,我们可以把地址直接硬编码在页面上面,但是这样并不灵活,尤其是另一个页面的url路由也需要可变参数的时候,硬编码就没有办法了。更好的办法是在后台生成另一个页面的url地址,这个时候就要用到一个新的方法url_for()了。
方法如下:
@app.route('/h1')
def head1():
css3=url_for('h2')
return '主页转到'%css3
@app.route('/h2')
def h2():
h1=url_for()
return '这里是h2
,版本号是'
if __name__ == '__main__':
app.run()
这个是简单的,如果第二个页面也需要参数,就麻烦一点了
@app.route('/h1')
def head1():
css3=url_for('h2',t=100) #在这里需要指定,传参了
return '主页转到'%css3
@app.route('/h2')
def h2(t):
# h1=url_for()
return '这里是h2
,版本号是%s'%t
if __name__ == '__main__':
app.run()