一: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函数的更多相关文章

  1. Flask jinja2 全局函数,宏

    内置全局函数 dict()函数,方便生成字典型变量 {% set user = dict(name='Mike',age=15) %} <p>{{ user | tojson | safe ...

  2. Flask:redirect()函数

    Windows 10家庭中文版,Python 3.6.4,Flask 1.0.2 重定向,就是在客户端提交请求后,本来是访问A页面,结果,后台给了B页面,当然,B页面中才有需要的信息. 在Flask中 ...

  3. Flask入门 flask结构 url_for 重定向(一)

    Flask入门(一) 1 安装虚拟环境Mac,linux sudo pip install virtualenv ​ ubuntu系统 sudo apt-get install python-virt ...

  4. url_for函数——快速寻找url

    我们已经知道,知道了url就可以找到对应的视图函数,那么现在问题来了,如果我们知道了视图函数,要怎么找到url呢?这时候我们就需要url_for函数了. # coding: utf-8from fla ...

  5. flask中url_for使用endpoint和视图函数名

    在flask中,使用url_for 进行路由反转时,需要传递一个endpoint的值,用法如下: @app.route('/', endpoint='my_index') def index(): r ...

  6. flask 在视图函数里操作数据库

    在视图函数里操作数据库 在视图函数里操作数据的方式和在python shell中的联系基本相同,只不过需要一些额外的工作.比如把查询结果作为参数 传入模板渲染出来,或是获取表单的字段值作为提交到数据库 ...

  7. flask 在视图函数中验证表单

    在视图函数中验证表单 因为现在的basic_form视图同时接受两种类型的请求:GET请求和POST请求.所以我们要根据请求方法的不同执行不同的代码.具体来说,首先是实例化表单,如果是GET请求,就渲 ...

  8. Flask之视图函数

    视图示例 @app.route('/hello') def hello(): return 'Hello World' if __name__ == '__main__': app.run() 特殊的 ...

  9. flask 链接 url_for()

    通常html的文件都放在template里面,那么静态的文件放在哪呢?staitc里面 调用 url_for('static', filename='css/styles.css', _externa ...

随机推荐

  1. python大佬养成计划----HTML DOM

    什么是DOM? DOM (Document Object Model) 译为文档对象模型,是 HTML 和 XML 文档的编程接口.HTML DOM 定义了访问和操作 HTML 文档的标准方法.DOM ...

  2. Java 中如何使用clone()方法克隆对象?

    java为什么要 对象克隆: 在程序开发时,有时可能会遇到以下情况:已经存在一个对象A,现在需要一个与A对象完全相同的B 对象,并对B 对象的属性值进行修改,但是A 对象原有的属性值不能改变.这时,如 ...

  3. 修改docker默认网段

    一. 修改普通docker run启动的容器的网段 https://blog.51cto.com/13670314/2345518?source=dra https://blog.csdn.net/w ...

  4. xml基础之二(XML结构【2】)DTD文档模版

    xml基础之二(XML结构[2])DTD文档模版 xml 模板 文档结构  我们知道XML主要用于数据的存储和传输,所以无论是自定义还是外部引用DTD模板文档,都是为了突出数据的存储规范.DTD(文档 ...

  5. spark 学习网站和资料

    spark 官网首页 https://spark.apache.org/ spark 官网文档 spark scala API 文档 https://spark.apache.org/docs/lat ...

  6. 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 ...

  7. Map类集合遍历

  8. 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 ...

  9. idea创建maven中的 jar、war、 pom项目

    我用的是:2019.1版本的idea 创建maven项目时候的选项: 1: 2: 3:之后的步骤都一样按照自己的来就行

  10. C# DropDownList绑定添加新数据的三种方法

    一.在前台手动绑定 <asp:DropDownList ID="DropDownList1" runat="server">    <asp: ...