怎么用Flask中的url_for()

发布时间:2020-08-25 09:24:38 作者:Leah
来源:亿速云 阅读:267

这篇文章将为大家详细讲解有关怎么用Flask中的url_for(),文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

在Flask开发中常会url_for()函数,这个url_for()函数是用于构建指定函数的URL,而且url_for操作对象是函数,而不是route里的路径。

如果route和函数名不一样而导致使用url_for()错误,千万不要去route找错误。 

例如下面的代码:

from flask import Flask, url_for
app = Flask(\__name__)
@app.route('/')
def index():
    pass
@app.route('/login')
def LOGIN():
    pass
with app.test_request_context():
    print(url_for('index'))
    print(url_for('login'))

print(url_for('index'))没有报错,就是一个反斜杠;print(url_for('login'))报错,抛出BuildError异常:

/ 
Traceback (most recent call last): 
File “<\pyshell#12>”, line 3, in 
print(url_for(‘login’)) 
File “C:\Python35\lib\site-packages\flask\helpers.py”, line 332, in url_for 
return appctx.app.handle_url_build_error(error, endpoint, values) 
File “C:\Python35\lib\site-packages\flask\app.py”, line 1811, in handle_url_build_error 
reraise(exc_type, exc_value, tb) 
File “C:\Python35\lib\site-packages\flask_compat.py”, line 33, in reraise 
raise value 
File “C:\Python35\lib\site-packages\flask\helpers.py”, line 322, in url_for 
force_external=external) 
File “C:\Python35\lib\site-packages\werkzeug\routing.py”, line 1758, in build 
raise BuildError(endpoint, values, method, self) 
werkzeug.routing.BuildError: Could not build url for endpoint ‘login’. Did you mean ‘index’ instead?

把login修改为LOGIN:

with app.test_request_context():
    print(url_for('index'))
    print(url_for('LOGIN'))

打印正常:

/ 
/login

参数

url_for()也可以附带一些参数,比如想要完整的URL,可以设置_external为Ture:

url_for('.static',_external=True,filename='pic/test.png')

这样返回的url是http://localhost/static/pic/test.png

参数示例:

endpoint 

URL的端点(即函数的名字)

values 

URL的变量参数

_external 

如果设置为True,则生成一个绝对路径URL

_scheme 

一个字符串指定所需的URL方案。_external参数必须设置为True,不然会抛出ValueError。

_anchor 

如果设置了这个则给URL添加一个mao

_method 

如果设置这个则显示地调用这个HTTP方法

关于怎么用Flask中的url_for()就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

推荐阅读:
  1. 分享一些python Django在开发中的使用经验
  2. 什么是Java、Python、JavaScript、PHP、C/C++编程语言

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python flask fo

上一篇:php5 session丢失的解决方法

下一篇:Python的sys模块有哪些功能

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》