Создавайте динамические URL во Flask с помощью url_for () - PullRequest
142 голосов
/ 20 сентября 2011

Половина моих маршрутов Flask требует переменной скажем, /<variable>/add или /<variable>/remove. Как мне создать ссылки на эти места?

url_for() принимает один аргумент для функции для маршрутизации, но я не могу добавить аргументы?

Ответы [ 3 ]

214 голосов
/ 20 сентября 2011

Для переменных требуются аргументы ключевых слов:

url_for('add', variable=foo)
78 голосов
/ 11 марта 2016

url_for во Flask используется для создания URL-адреса, чтобы избежать дополнительных затрат на изменение URL-адресов во всем приложении (в том числе в шаблонах). Без url_for, если в корневом URL-адресе вашего приложения произойдет изменение, вам придется менять его на каждой странице, где присутствует ссылка.

Синтаксис: 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>

Таким образом, вы можете просто передать параметры!

30 голосов
/ 20 сентября 2011

См. документ API Flask для 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') }}">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...