溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么用Flask中的url_for()

發(fā)布時(shí)間:2020-08-25 09:24:38 來源:億速云 閱讀:253 作者:Leah 欄目:編程語言

這篇文章將為大家詳細(xì)講解有關(guān)怎么用Flask中的url_for(),文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

在Flask開發(fā)中常會(huì)url_for()函數(shù),這個(gè)url_for()函數(shù)是用于構(gòu)建指定函數(shù)的URL,而且url_for操作對(duì)象是函數(shù),而不是route里的路徑。

如果route和函數(shù)名不一樣而導(dǎo)致使用url_for()錯(cuò)誤,千萬不要去route找錯(cuò)誤。 

例如下面的代碼:

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'))沒有報(bào)錯(cuò),就是一個(gè)反斜杠;print(url_for('login'))報(bào)錯(cuò),拋出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修改為L(zhǎng)OGIN:

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

打印正常:

/ 
/login

參數(shù)

url_for()也可以附帶一些參數(shù),比如想要完整的URL,可以設(shè)置_external為Ture:

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

這樣返回的url是http://localhost/static/pic/test.png

參數(shù)示例:

endpoint 

URL的端點(diǎn)(即函數(shù)的名字)

values 

URL的變量參數(shù)

_external 

如果設(shè)置為True,則生成一個(gè)絕對(duì)路徑URL

_scheme 

一個(gè)字符串指定所需的URL方案。_external參數(shù)必須設(shè)置為True,不然會(huì)拋出ValueError。

_anchor 

如果設(shè)置了這個(gè)則給URL添加一個(gè)mao

_method 

如果設(shè)置這個(gè)則顯示地調(diào)用這個(gè)HTTP方法

關(guān)于怎么用Flask中的url_for()就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI