我是靠谱客的博主 个性裙子,最近开发中收集的这篇文章主要介绍【Flask基础】二,视图路由与路由转换器配置(附前/后端定时重定向演示)一,前端访问路由配置二,路由转换器(路由提取器)三,前后端定时重定向,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
一,前端访问路由配置
# coding:utf-8
from flask import Flask, redirect, url_for
app = Flask(__name__)
@app.route("/index")
def index():
"""定义的视图函数"""
return "hello flask"
# 【1】通过methods限定访问方式
@app.route("/post_only", methods=["GET", "POST"])
def post_only():
return "post only page"
# 【2】访问路由相同,通过不同的请求方式来决定返回不同的页面视图
@app.route("/hello", methods=["POST"])
def hello():
return "hello 1"
@app.route("/hello", methods=["GET"])
def hello2():
return "hello 2"
#【3】给视图函数设置多个路由,访问那个路由都能访问到该视图
@app.route("/hi1")
@app.route("/hi2")
def hi():
return "hi page"
#【4】使用url_for反解析来获取视图url,使用redirect来重定向视图
@app.route("/login")
def login():
# url = "/"
# 使用url_for的函数,通过视图函数的名字找到视图对应的url路径
url = url_for("index")
return redirect(url)
@app.route("/register")
def register():
# url = "/"
url = url_for("index")
return redirect(url)
if __name__ == '__main__':
# 通过url_map可以查看整个flask中的路由信息
print(app.url_map)
# 启动flask程序
app.run(debug=True)
"""
<Rule '/register' (GET, HEAD, OPTIONS) -> register>,
<Rule '/index' (GET, HEAD, OPTIONS) -> index>,
<Rule '/hello' (POST, OPTIONS) -> hello>,
<Rule '/hello' (GET, HEAD, OPTIONS) -> hello2>,
<Rule '/login' (GET, HEAD, OPTIONS) -> login>,
<Rule '/hi2' (GET, HEAD, OPTIONS) -> hi>,
<Rule '/hi1' (GET, HEAD, OPTIONS) -> hi>,
<Rule '/static/<filename>' (GET, HEAD, OPTIONS) -> static>])
"""
二,路由转换器(路由提取器)
# coding:utf-8
from flask import Flask, redirect, url_for
from werkzeug.routing import BaseConverter
app = Flask(__name__)
# 【系统预设转换器】
# @app.route("/goods/<int:goods_id>") #提取数字
@app.route("/goods/<goods_id>") # 不加转换器类型, 默认是普通字符串规则(除了/的字符)
def goods_detail(goods_id):
"""定义的视图函数"""
return "goods detail page %s" % goods_id
######################################################################################################
#【自定义转换器】
# 【简单--写定的特异性转换器--只用于获取号码】
class MobileConverter(BaseConverter):
def __init__(self, url_map):
super(MobileConverter, self).__init__(url_map)
self.regex = r'1[34578]d{9}'
# 【复杂--自定义万能转换器--用时输入匹配规则】
class RegexConverter(BaseConverter):
""""""
def __init__(self, url_map, regex):
# 调用父类的初始化方法
super(RegexConverter, self).__init__(url_map)
# 将正则表达式的参数保存到对象的属性中,flask会去使用这个属性来进行路由的正则匹配
self.regex = regex
#正常直接访问
def to_python(self, value):
""""""
print("to_python方法被调用")
# return "abc"
# value是在路径进行正则表达式匹配的时候提取的参数
###此处是匹配到的正则数据首先到达的地方,可以在这里对匹配到的数据进行筛选,修改等操作
return value
#通过urlfor来重定向访问
def to_url(self, value):
"""使用url_for的方法的时候被调用"""
###通过urlfor转入到该路由的情况下传入的参数,可以在这进行处理
print("to_url方法被调用")
# return "15811111111"
return value
# 【将自定义的装换器注册到应用中】将自定义的转换器添加到flask的应用中
app.url_map.converters["re"] = RegexConverter
app.url_map.converters["mobile"] = MobileConverter
# @app.route("/send/<mobile:mobile_num>") #使用mobile 预设转换器
@app.route("/send/<re(r'1[34578]d{9}'):mobile_num>") #使用re 万能装换器
def send_sms(mobile_num):
return "send sms to %s" % mobile_num
@app.route("/index")
def index():
url = url_for("send_sms", mobile_num="18922222222") #重定向视图
return redirect(url)
if __name__ == '__main__':
# 通过url_map可以查看整个flask中的路由信息
print(app.url_map)
# 启动flask程序
app.run(debug=True)
三,前后端定时重定向
1.前端定时重定向
- 当跳转到自定义的404错误页面后,实现两秒后跳转到首页
{% extends '母版.html' %} {# 将当前页面继承至base.html母版 #}
{% block content %}
<div class="col-10" style="margin: auto">
<img src="/img/404.png" class="img-fluid"/>
</div>
<script>
setTimeout(function () {
location.href = '/';
}, 2000);
</script>
{% endblock %}
2.后端定时重定向
- 当访问到某一路由时,自动重定向到首页,可以用于异常网址访问,实质还是前端重定向
# 直接在响应中进行重定向
@app.route('/error')
def redjs():
html = '感谢访问,2秒以后将跳转到首页.'
html += "<script>"
html += "setTimeout(function() {location.href='/';}, 2000);"
html += "</script>"
return html
最后
以上就是个性裙子为你收集整理的【Flask基础】二,视图路由与路由转换器配置(附前/后端定时重定向演示)一,前端访问路由配置二,路由转换器(路由提取器)三,前后端定时重定向的全部内容,希望文章能够帮你解决【Flask基础】二,视图路由与路由转换器配置(附前/后端定时重定向演示)一,前端访问路由配置二,路由转换器(路由提取器)三,前后端定时重定向所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复