首页 > 其他分享 >Flask学习笔记(九)-构造URL(url_for)和重定向

Flask学习笔记(九)-构造URL(url_for)和重定向

时间:2022-10-06 18:44:47浏览次数:44  
标签:__ name Flask app URL url 重定向

一、构造URL(url_for)

一般我们通过一个URL就可以执行到某一个函数。如果反过来,我们知道一个函数,怎么去获得这个URL呢?url_for函数就可以帮我们实现这个功能。url_for()函数接收两个及以上的参数,他接收函数名作为第一个参数,接收对应URL规则的命名参数,如果还出现其他的参数,则会添加到URL的后面作为查询参数。

通过构建URL的方式而选择直接在代码中拼URL的原因有两点:

  1. 将来如果修改了URL,但没有修改该URL对应的函数名,就不用到处去替换URL了。
  2. url_for()函数会转义特殊字符和Unicode数据,这些工作都不需要我们自己处理。
from flask import Flask,url_for
# 已知路由访问函数
# 实例化app
app = Flask(__name__)

@app.route('/')
def hello_world():
    print(url_for('article_list',aid=1,page=1,name=1))
    # 添加参数用&连接
    return 'hello world'

# url_for   通过一个页面跳转到另一个页面   通过url_for 获取网页的url
@app.route('/article/<aid>')
def article_list(aid):
    print(url_for('hello_world',next='/'))
    return 'articleList {}'.format(aid)

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

运行结果:

 * Running on http://127.0.0.1:5000
Press CTRL+C to quit
/article/1?page=1&name=1
127.0.0.1 - - [06/Oct/2022 18:24:01] "GET / HTTP/1.1" 200 -
/?next=%2F
127.0.0.1 - - [06/Oct/2022 18:24:26] "GET /article/1 HTTP/1.1" 200 -

二、访问重定向

重定向分为永久性重定向和暂时性重定向,在页面上体现的操作就是浏览器会从一个页面自动跳转到另外一个页面。比如用户访问了一个需要权限的页面,但是该用户当前并没有登录,因此我们应该给他重定向到登录页面。

示例:

from flask import Flask ,url_for ,redirect,request
app = Flask(__name__)
@app.route('/login/',methods=['GET','POST'])
def login():
    return 'login page'

@app.route('/profile/',methods=['GET','POST'])
def profile():
    name = request.values.get('name')
    if not name:
        # 如果没有name,说明没有登录,重定向到登录页面
        return redirect(url_for('login'))
    else:
        return name

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

访问http://127.0.0.1:5000/profile/

运行结果:

 访问url重定向到了/login/     

标签:__,name,Flask,app,URL,url,重定向
From: https://www.cnblogs.com/xfbk/p/16758184.html

相关文章

  • Flask框架:运用SocketIO实现WebSSH
    Flask框架中如果想要实现WebSocket功能有许多种方式,运用SocketIO库来实现无疑是最简单的一种方式,Flask中封装了一个flask_socketio库该库可以直接通过pip仓库安装,如下内容......
  • # github报错:The requested URL returned error:
    一、重新绑定密匙ssh-keygen-trsa-C'[email protected]'按下enter记录下生成的路径:C:\Users\Administrator.ssh从提示的路径找到对应的.ssh文件,打开id_rsa.pub文件......
  • curl查看请求是走http还https
    下面是http请求过程curl-vhttp://www.boyblue.xyz*Abouttoconnect()towww.boyblue.xyzport80(#0)*Trying192.168.1.28...*Connectedtowww.boyblue.x......
  • Flask 框架:运用Echarts绘制图形
    echarts是百度推出的一款开源的基于JavaScript的可视化图表库,该开发库目前发展非常不错,且支持各类图形的绘制可定制程度高,Echarts绘图库同样可以与Flask结合,前台使用echart......
  • C++之libcurl环境配置安装
    目录C++之libcurl环境配置安装前言curl与libcurl的区别InstalllibcurlonLinuxInstalllibcurlonWindows源码例子其他的网络库C++之libcurl环境配置安装前言最近在......
  • flask_wtf 表单
    flask_wtf表单forms.pyfromflask_wtfimportFlaskFormfromwtformsimportStringField,PasswordField,BooleanField,SubmitFieldfromwtforms.validatorsimpor......
  • Django的urls的配置
    在一个请求到达的时候,最先达到的就是视图层,然后根据url映射到视图函数。这一部分我们来说明url的配置。概述为了给一个应用设计URL,你需要创建一个Python模块,通常称为URL......
  • Servlet—— urlPattern配置
    ServleturlPattern配置  Servlet要想被访问,必须配置其访问路径(urlPattern)  1、一个Servlet可以配置多个urlPattern      2、urlPattern配置规则   ......
  • 关于URL的获取
    刚刚某人叫我放贾樟柯的《世界》给她看,满世界找不到,因为这是他的第一部电影。后来只在手机浏览器上找到了,本来想到电脑上打开网页源码,没想到 HTTPERROR-2146697211误......
  • 安装Docker容器时,出现https://yum.dockerproject.org/repo/main/centos/7/repodata/re
    解决办法:首先确定把相应的前置包都安装好,之后操作命令行:执行yum-config-manager--disabledockerrepo命令然后再执行:sudo yum installdocker-cedocker-ce-clicont......