Flask中的url_for()怎么用?[Flask框架]

python

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:Python35libsite-packagesflaskhelpers.py”, line 332, in url_for 

return appctx.app.handle_url_build_error(error, endpoint, values) 

File “C:Python35libsite-packagesflaskapp.py”, line 1811, in handle_url_build_error 

reraise(exc_type, exc_value, tb) 

File “C:Python35libsite-packagesflask_compat.py”, line 33, in reraise 

raise value 

File “C:Python35libsite-packagesflaskhelpers.py”, line 322, in url_for 

force_external=external) 

File “C:Python35libsite-packageswerkzeugouting.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()怎么用?[Flask框架] 的全部内容, 来源链接: utcz.com/z/522451.html

回到顶部