flask学习笔记——路由管理

一个网站是由多个页面组成,而每个页面的访问地址都不一样,这便需要对路由进行管理

普通路由

默认访问位置,如果我们在路由中单独写个‘/’他访问的就是默认页面

例如:

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/<cs1>') # 参数传递
def head1(cs1):
# 函数里面接收参数
    return '我是页面一,接收的参数是%s'%cs1


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

 

当然也可以接收多个参数的,并且这里的参数是必须的多个参数是下面这样定义的,当然访问的时候,也需要每个参数之间用‘/’隔开

from flask import Flask,render_template
app = Flask(__name__)
# 学了路由管理,可以有多个不同的界面


@app.route('/xm1/<cs1>/<cs2>') # 参数传递
def head1(cs1,cs2):
# 函数里面接收参数
    return '我是页面一,接收的参数一是%s 参数二是:%s'%(cs1,cs2)


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

URL参数类型过滤和转换器

参数也是有数据类型的,默认是字符类型,主要有以下几种数据类型

类型

作用

string

默认的字符转换器,匹配不包含/的字符串

int

接受并转换成整数

float

接受并转换成浮点数

path

匹配包含/的字符串

uuid

接收uuid类型的字符串

 

from flask import Flask,render_template
app = Flask(__name__)
# 学了路由管理,可以有多个不同的界面


@app.route('/xm1/<cs1>/<float:cs2>/<int:cs3>') # 参数传递
def head1(cs1,cs2,cs3):
# 函数里面接收参数
    return '我是页面一,接收的参数一是%s 参数二是浮点型的:%f参数三是整形的他是:%d'%(cs1,cs2,cs3)


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

注意:“:”号前后不要有空格,否则会报错。根据运行的截图,我们也可以看出这个转换器确实起到了过滤和转换的作用。使用转换器,可以让我们的路由处理更加严谨,

 

正则路由示例

这里需要学习正则和装饰器方面的知识,我已经把前面忘了,,先暂留个坑

 

 

构建url地址

有的时候需要在一个页面上跳转到另一个页面,那就需要获取另一个页面的url路由地址,我们可以把地址直接硬编码在页面上面,但是这样并不灵活,尤其是另一个页面的url路由也需要可变参数的时候,硬编码就没有办法了。更好的办法是在后台生成另一个页面的url地址,这个时候就要用到一个新的方法url_for()了。

方法如下:


@app.route('/h1')
def head1():
    css3=url_for('h2')
    return '主页<a href=%s>转到</a>'%css3


@app.route('/h2')
def h2():
    h1=url_for()
    return '<h2>这里是h2</h2>,版本号是'

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

这个是简单的,如果第二个页面也需要参数,就麻烦一点了


@app.route('/h1')
def head1():
    css3=url_for('h2',t=100) #在这里需要指定,传参了
    return '主页<a href=%s>转到</a>'%css3

@app.route('/h2<t>')
def h2(t):
    # h1=url_for()

    return '<h2>这里是h2</h2>,版本号是%s'%t

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章