首页 > 编程语言 > 详细

python框架-flask-08 url_for函数

时间:2019-10-23 15:16:11      阅读:63      评论:0      收藏:0      [点我收藏+]

一:url_for函数

  干什么的?传入函数名,得到函数的路由地址(访问视图函数的地址)

from flask import Flask
from flask import url_for

app = Flask(__name__)


@app.route("/")
def index():
    login_url = url_for("login")
    print(login_url)
    return "主页"


@app.route("/login")
def login():
    return "登录"

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

 例如:浏览器输入:127.0.0.1:5000/ 显示主页   控制台输出 /login , 可以用它来完成跳转链接的功能:对上面的函数进行修改,加入html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
         <a href="{{ a }}">登录</a>
</body>
</html>
from flask import Flask
from flask import render_template
from flask import url_for

app = Flask(__name__)


@app.route("/")
def index():
    login_url = url_for("login")
    return render_template("url_for_test.html",a=login_url)


@app.route("/login")
def login():
    return "欢迎进入登录页面"

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

 

技术分享图片 

点击登录后跳转到下面界面

技术分享图片

 注意:

login_url = url_for("login",_external = True)   这样会显示完整的url地址

http://127.0.0.1:5000/login

还可以传递参数,对路径进行拼接

login_url = url_for("login", a=1, _external = True)

http://127.0.0.1:5000/login?a=1  自动将位置参数,拼接成查询字符串

login_url = url_for("login", name="haha", _external = True)

假如点击index界面的登录,不跳转到登录界面,而是显示一张静态的图片

@app.route("/")
def index():
    login_url = url_for("static",filename="pic.jpg",_external=True)
    print(login_url)
    return render_template("url_for_test.html",a=login_url)

 

点击登录后,浏览器跳转后,显示了图片, 控制台输出:http://127.0.0.1:5000/static/pic.jpg  这种情况浏览器没有将 filenme="pic.jpg" 拼接成

http://127.0.0.1:5000/static?pic.jpg  而是 拼接成 http://127.0.0.1:5000/static/pic.jpg 

原因是:尝试将参数 filename="pic.jpg" 改为 a="pic.jpg"

报错:werkzeug.routing.BuildError: Could not build url for endpoint ‘static‘ with values [‘a‘]. Did you forget to specify values [‘filename‘]?

说明:框架会自动分辨,要是以文件进行赋值,必须使用 filename="文件"

技术分享图片

三:产生的意义

  在模板中的a标签手动输入链接地址,进行点击跳转,这个很简答,很容易办到。

  假如,视图函数app.route("地址")  地址发生了,改变,那么要链接到这个视图函数,就需要对前端的每个链接进行修改,这显然不方便。

  但是,通过url_for直接能反向获取视图函数的链接地址,这样就能省去,动态改变造成的麻烦。

 

python框架-flask-08 url_for函数

原文:https://www.cnblogs.com/meloncodezhang/p/11726057.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!