flask之url_for函数
一: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直接能反向获取视图函数的链接地址,这样就能省去,动态改变造成的麻烦。
flask之url_for函数的更多相关文章
- Flask jinja2 全局函数,宏
内置全局函数 dict()函数,方便生成字典型变量 {% set user = dict(name='Mike',age=15) %} <p>{{ user | tojson | safe ...
- Flask:redirect()函数
Windows 10家庭中文版,Python 3.6.4,Flask 1.0.2 重定向,就是在客户端提交请求后,本来是访问A页面,结果,后台给了B页面,当然,B页面中才有需要的信息. 在Flask中 ...
- Flask入门 flask结构 url_for 重定向(一)
Flask入门(一) 1 安装虚拟环境Mac,linux sudo pip install virtualenv ubuntu系统 sudo apt-get install python-virt ...
- url_for函数——快速寻找url
我们已经知道,知道了url就可以找到对应的视图函数,那么现在问题来了,如果我们知道了视图函数,要怎么找到url呢?这时候我们就需要url_for函数了. # coding: utf-8from fla ...
- flask中url_for使用endpoint和视图函数名
在flask中,使用url_for 进行路由反转时,需要传递一个endpoint的值,用法如下: @app.route('/', endpoint='my_index') def index(): r ...
- flask 在视图函数里操作数据库
在视图函数里操作数据库 在视图函数里操作数据的方式和在python shell中的联系基本相同,只不过需要一些额外的工作.比如把查询结果作为参数 传入模板渲染出来,或是获取表单的字段值作为提交到数据库 ...
- flask 在视图函数中验证表单
在视图函数中验证表单 因为现在的basic_form视图同时接受两种类型的请求:GET请求和POST请求.所以我们要根据请求方法的不同执行不同的代码.具体来说,首先是实例化表单,如果是GET请求,就渲 ...
- Flask之视图函数
视图示例 @app.route('/hello') def hello(): return 'Hello World' if __name__ == '__main__': app.run() 特殊的 ...
- flask 链接 url_for()
通常html的文件都放在template里面,那么静态的文件放在哪呢?staitc里面 调用 url_for('static', filename='css/styles.css', _externa ...
随机推荐
- python大佬养成计划----HTML DOM
什么是DOM? DOM (Document Object Model) 译为文档对象模型,是 HTML 和 XML 文档的编程接口.HTML DOM 定义了访问和操作 HTML 文档的标准方法.DOM ...
- Java 中如何使用clone()方法克隆对象?
java为什么要 对象克隆: 在程序开发时,有时可能会遇到以下情况:已经存在一个对象A,现在需要一个与A对象完全相同的B 对象,并对B 对象的属性值进行修改,但是A 对象原有的属性值不能改变.这时,如 ...
- 修改docker默认网段
一. 修改普通docker run启动的容器的网段 https://blog.51cto.com/13670314/2345518?source=dra https://blog.csdn.net/w ...
- xml基础之二(XML结构【2】)DTD文档模版
xml基础之二(XML结构[2])DTD文档模版 xml 模板 文档结构 我们知道XML主要用于数据的存储和传输,所以无论是自定义还是外部引用DTD模板文档,都是为了突出数据的存储规范.DTD(文档 ...
- spark 学习网站和资料
spark 官网首页 https://spark.apache.org/ spark 官网文档 spark scala API 文档 https://spark.apache.org/docs/lat ...
- Maven install报错:MojoFailureException ,To see the full stack trace of the errors, re-run Maven with the -e switch.解决
报错日志: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".SLF4J: Defaulting to ...
- Map类集合遍历
- oracle DBID,SID,DB_NAME,DB_DOMAIN,INSTANCE_NAME,DB_UNIQUE_NAME, SERVICE_NAMES 及监听参数的说明
DBID,SID,DB_NAME,DB_DOMAIN,INSTANCE_NAME,DB_UNIQUE_NAME, SERVICE_NAMES 及监听参数的说明 DB 相关的: DBID, SIDPFI ...
- idea创建maven中的 jar、war、 pom项目
我用的是:2019.1版本的idea 创建maven项目时候的选项: 1: 2: 3:之后的步骤都一样按照自己的来就行
- C# DropDownList绑定添加新数据的三种方法
一.在前台手动绑定 <asp:DropDownList ID="DropDownList1" runat="server"> <asp: ...