我的Flask路線的一半需要變量say /<variable>/add
或/<variable>/remove
。如何創建指向這些位置的鏈接?使用url_for()創建Flask中的動態URL
url_for()
需要一個參數爲函數路由到但我不能添加參數?
我的Flask路線的一半需要變量say /<variable>/add
或/<variable>/remove
。如何創建指向這些位置的鏈接?使用url_for()創建Flask中的動態URL
url_for()
需要一個參數爲函數路由到但我不能添加參數?
它採用關鍵字參數的變量:
url_for('add', variable=foo)
參考使用的the Flask API document for flask.url_for()
其他的示例代碼段用於連接JS或CSS到您的模板如下。
<script src="{{ url_for('static', filename='jquery.min.js') }}"></script>
<link rel=stylesheet type=text/css href="{{ url_for('static', filename='style.css') }}">
在燒瓶url_for
用於創建一個URL,以防止具有在整個應用程序改變URL的開銷(包括在模板中)。如果沒有url_for
,如果您的應用的根網址發生變化,那麼您必須在鏈接所在的每個頁面中對其進行更改。
語法:url_for('name of the function of the route','parameters (if required)')
它可以作爲:
@app.route('/index')
@app.route('/')
def index():
return 'you are in the index page'
現在,如果你有一個鏈接索引頁:您可以使用此:
<a href={{ url_for('index') }}>Index</a>
你可以做例如:很多東西,例如:
@app.route('/questions/<int:question_id>'): #int has been used as a filter that only integer will be passed in the url otherwise it will give a 404 error
def find_question(question_id):
return ('you asked for question{0}'.format(question_id))
對於上面我們可以使用:
<a href = {{ url_for(find_question,question_id=1) }}>Question 1</a>
這樣你可以簡單地傳遞參數!
我有一個問題,在第一個示例中,索引方法作爲字符串傳遞,而在第二個方法中,find_question被傳遞爲變量。爲什麼? –
@AnandTyagi這是你的意思嗎? [URL路由](http://flask.pocoo.org/docs/0.12/quickstart/#url-building) –
意思是這個函數是'def add(variable)'? – endolith
@ndndolith,是的。傳遞給'url_for'的kwargs將作爲Flask中的變量規則路由的函數參數傳遞 – highvolt