flask重定向之redirect()、url_for()

一、redirect()用法

作用:重定向到新的url地址

1.直接用,可以是完整url地址

@index_blu.route('/1111')
def test():
    return redirect('http://www.baidu.com')

2、可以是定义的url地址,注意不要前面的"/",host地址就为启动文件配置的host地址

@index_blu.route('/3')
def test3():
    return redirect('1111')  #1111为定义的url地址  host地址/1111

举例说明:

from flask import Blueprint,render_template,redirect

ta=Blueprint('testbl001',__name__)

@ta.route('/method')
def test002():
    return 'test111222'


@ta.route('/test')
def testA():
    return redirect('method')   #重定向参数为定义的url地址
#访问地址/test时,重定向到url地址  host地址/method,这时候返回test111222

@ta.route('/search')
def testB():
    return redirect('https://www.baidu.com/') #重定向参数为完整url链接

3、配合url_for()一起来实现重定向,最终效果与直接使用redirect()一样,只是配合url_for()一起来实现重定向更灵活

@index_blu.route('/2')
def test2():
    return redirect(url_for('index.test'))

二、url_for()用法

url_for()函数对于动态构建特定函数的URL非常有用。

url_for()函数接受函数名作为第一个参数(必填),以及一个或多个关键字参数,每个参数对应于URL的变量部分(有则填,没有则不填)。
注意url_for()里面为函数名,如果注册了蓝图,则为蓝图名字.函数名,注意是蓝图名,不是实例化的蓝图对象名。

如下演示:

from flask import Blueprint,redirect,url_for

pa=Blueprint('testbl002',__name__)

@pa.route('/admin')
def hello_admin():
    return 'Hello Admin'

@pa.route('/guest/<guest>')
def hello_guest(guest):
    return 'Hello %s as Guest' % guest


@pa.route('/user/<name>')
def hello_user(name):
   if name =='admin':
      return redirect(url_for('testbl002.hello_admin'))  
      #url_for()里面为函数名,如果注册了蓝图,则为蓝图名字.函数名,注意是蓝图名,不是实例化的蓝图对象名
   else:
    return redirect(url_for('testbl002.hello_guest', guest = name)) 
    #url_for()里面为函数名,如果注册了蓝图,则为蓝图名字.函数名,注意是蓝图名,不是实例化的蓝图对象名

踩坑: 在使用url_for()时候,如果在函数名前面不加上蓝图名,打开url地址服务端会报错:werkzeug.routing.BuildError: Could not build url for endpoint ‘hello_admin’. Did you mean ‘testbl002.hello_admin’ instead?

解决方法:在使用url_for()的时候,函数名前面加上蓝图名。 不使用url_for()时候不存在此问题。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flash是一种基于浏览器的多媒体技术,用于创建动画、交互式应用程序和其他富媒体内容。在Python中,可以使用Flask框架来创建Web应用程序,包括使用Flash来显示消息。 Flask中的Flash是一种用于在Web应用程序中显示消息的技术。它通常用于向用户显示操作结果、错误消息或其他通知。 下面是一个使用Flask的Flash的例子: ```python from flask import Flask, flash, redirect, render_template, request, url_for app = Flask(__name__) app.secret_key = 'secret_key' @app.route('/') def index(): return render_template('index.html') @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': username = request.form['username'] password = request.form['password'] if username == 'admin' and password == 'password': flash('Login successful!') return redirect(url_for('index')) else: flash('Invalid username or password!') return render_template('login.html') if __name__ == '__main__': app.run(debug=True) ``` 在这个例子中,我们使用了Flask中的`flash`函数来显示消息。在登录页面中,如果用户输入的用户名和密码正确,我们会使用`flash`函数显示一条“登录成功”的消息。如果用户名或密码不正确,则会显示一条“无效的用户名或密码”的消息。在`index`页面中,我们可以使用`get_flashed_messages`函数来获取已经显示的消息。 ```html {% for message in get_flashed_messages() %} <div class="alert alert-info"> {{ message }} </div> {% endfor %} ``` 这个例子只是Flash在Python中的一个简单应用。在实际应用中,Flash可以用于更多的场景,比如显示表单验证错误、成功提交表单等等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值