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 ...
随机推荐
- java 中创建线程有哪几种方式?
Java中创建线程主要有三种方式: 一.继承Thread类创建线程类 (1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务.因此把run()方法称为执行 ...
- python的filter,reduce,map
1.filter filter(func,iter) 只能处理一个参数(iter),仅仅将满足func方法的数值过滤出来 如: a = [,,,,] list(filter(lambda x:x> ...
- Django的media配置与富文本编辑器使用的实例
效果预览 文章列表 添加文章 编辑文章|文章详情|删除文章 项目的基本文件 项目的Model from django.db import models # 导入富文本编辑器相关的模块 from cke ...
- 源码搭建mysql5.7.20
转载过来的文章,只是借用原文样式与框架,根据自己实验环境进行全面改动,仅供参考! 使用yum安装的MySQL一般版本比较旧,但是运行稳定.如果想要尝试最新的功能或者需要指定特殊的功能的话,就需要手工进 ...
- 无障碍(Accessible Rich Internet Applications)
可访问性就是让你的网站能够尽可能为越来越多的人可用的做法,这意味着需要竭尽全力不要将任何访问信息的人挡在门外,仅仅因为他们可能有某些方面的残疾或者因为某些个人情况例如他们正在使用的设备.他们的网速.或 ...
- Java反序列化漏洞整理
Fastjson 反序列化 CVE-- Fastjson 利用版本范围为 Fastjson 及之前的版本 Struts2 S2-, S2-, S2-, S2-, S2-, S2-, S2-, S2-, ...
- VMware下Linux构建仅主机模式的局域网网络配置方案
最近使用Linux,进行网络配置,以前都是桥接直连,然后直接组网.由于一些原因现在虚拟机做内网使用,不用上网,只能使用仅主机模式.在仅主机模式下进行虚拟机组网. 仅主机模式下各个虚拟机只能和主机通信, ...
- [Git] 007 三棵树以及向本地仓库加入第一个文件
1. "三棵树" 1.1 前言 理论上要稍稍复杂一点 我在这里说得简化一点 顺道挖个坑 下回具体介绍 坑号编码:Git07-1 1.2 看图 1.3 简介 树左:工作区(平时写代码 ...
- [Python3 填坑] 008 索引君的朋友 in
目录 1. print( 坑的信息 ) 2. 开始填坑 (1) 前情提要 (2) 索引君的朋友 in 上线 (3) 既然说了 in,不妨再说一说 not in (4) 一些补充 1. print( 坑 ...
- [2019杭电多校第四场][hdu6621]K-th Closest Distance(主席树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6621 题意为求区间[l,r]内第k小|a[i]-p|的值. 可以二分答案,如果二分的值为x,则判断区间 ...