#encoding=utf-8 """ 重定向redirect (1)flask中的redirect函数可以重定向到指定的页面(跳转到指定页面) (2)redirect函数用于重定向,实现机制很简单,就是向客户端(浏览器)发送一个重定向的HTTP报文,浏览器会去访问报文中指定的url (3)使用redirect时,只需要给定一个字符串类型的参数即可,会自动访问字符串指定的链接 (4)重定向分为永久性重定向和暂时性重定向,在页面上体现的操作就是浏览器会从一个页面跳转到另一个页面 (5)永久性重定向:http状态码是301,多用于旧网址被废弃要转到一个新的网址确保用户的访问 >> 京东网站:输入原京东页面网址的时候,原京东页面已废除,会重定向到新京东页面的网址 (6)暂时性重定向:http状态码是302,表示页面暂时性跳转 >> 用户登录:用户访问一个需要权限的页面,用户没有登录时,会重定向到登录页面 """ from flask import Flask from flask import abort from flask import url_for from flask import redirect from flask import render_template from werkzeug.routing import BaseConverter basic = "F:/MyProject" # 创建web服务器(http)实例:内置方法__name__是预定义变量,被设置为使用本模块,html存放的路径,静态文件的路径 app = Flask(__name__) # redirect函数可以重定向到指定的页面(跳转到指定页面) @app.route('/restful/dump') def dump(): # 只需要给定一个字符串类型的参数即可,会自动访问字符串指定的链接 return redirect(url_for('profile',name='url', page=20)) # restful url的int整数测试 @app.route('/restful/int_demo/<int:num1>-<int:num2>') def page(num1, num2): print(f"num1的类型是:{type(num1)}-{num1}") print(f"num2的类型是:{type(num2)}-{num2}") data = f'书籍页面转换:从{num1}到{num2}' return render_template('base1.html', **locals()) # restful url的float浮点数测试 @app.route('/restful/float_demo/<float:num>') def weight(num): print(f"num的类型是:{type(num)}-{num}") data = f'我的体重是:{num}斤' return render_template('base1.html', **locals()) # restful url的int整数测试 @app.route('/restful/path_demo/<path:way>') def address(way): print(f"way的类型是:{type(way)}-{way}") data = f'我的家庭地址是:{way}' return render_template('base1.html', **locals()) # 自定义 class MyIntConverter(BaseConverter): def __init__(self, url_map): super(MyIntConverter, self).__init__(url_map) def to_python(self, value): # 自动转换成python类型时,后面添加2 return f"py{value}" def to_url(self, value): # 使用url_for自定义规则匹配url时,后面添加2 return f"2{value}" # 给应用增加一些URL规则,生成对应的正则表达式进行URL匹配 app.url_map.converters['rule'] = MyIntConverter # 设置自定义的转换器的BaseConverter类(继承werkzeug.routing) # 使用app.url_map.converters['自定义规则名称'] = 自定义转换器类,将自定义的类映射到app.url_map.converters @app.route('/restful/profile/<rule:name>') def profile(name): data = f'函数功能:{name}将自定义的类映射' return render_template('base1.html', **locals()) # restful url的转换器,使用自定义的规则进行转换 @app.route('/restful/trans') def trans(): # url_for反转出请求路由,内部传递的函数名称参数,不能是其所在的函数名称 # 拼接url链接,使用rule自定义规则将参数转换,传入在路由中已经定义的参数-直接拼接 print(url_for('profile', name='url')) # 传入在路由中没有定义的参数,以get方式('?参数名=参数值')传递 print(url_for('profile', name='url', page=20)) data = 'url_for调用profile函数,使用自定义规则,反转获取请求链接' return render_template('base1.html', **locals()) # 启动项目服务器--可以通过参数更改,通常网站的页面需要放到网站服务器上,用户无法双击打开 if __name__ == '__main__': def run(self): app.run( # host:主机地址 host="localhost", # port:访问端口 port=80, # debug:调试模式,测试环境True,生产环境Fasle debug=True, # use_reloader:自动重启 use_reloader=True )
Flask10_url重定向
最新推荐文章于 2024-05-03 14:58:02 发布