web-dev-qa-db-fra.com

Créer des URL dynamiques dans Flask avec url_for ()

La moitié de mes itinéraires Flask nécessite une variable, par exemple, /<variable>/add ou /<variable>/remove. Comment créer des liens vers ces lieux?

url_for() prend un argument pour que la fonction soit routée, mais je ne peux pas ajouter d'arguments?

145
Gio Borje

Il faut des arguments de mots clés pour les variables:

url_for('add', variable=foo)
217
FogleBird

url_for in Flask est utilisé pour créer une URL afin d'éviter la surcharge de devoir modifier les URL dans une application (y compris dans les modèles). Sans url_for, s'il y a un changement dans l'URL racine de votre application, vous devez le changer à chaque page où le lien est présent.

Syntaxe: url_for('name of the function of the route','parameters (if required)')

Il peut être utilisé comme:

@app.route('/index')
@app.route('/')
def index():
    return 'you are in the index page'

Maintenant, si vous avez un lien vers la page d'index, vous pouvez utiliser ceci:

<a href={{ url_for('index') }}>Index</a>

Vous pouvez faire beaucoup de choses avec, par exemple:

@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))

Pour ce qui précède, nous pouvons utiliser:

<a href = {{ url_for('find_question' ,question_id=1) }}>Question 1</a>

Comme cela, vous pouvez simplement passer les paramètres!

83
Hiro

Reportez-vous à le document API Flask pour flask.url_for()

Vous trouverez ci-dessous d’autres exemples d’extraits d’usage pour lier js ou css à votre modèle.

<script src="{{ url_for('static', filename='jquery.min.js') }}"></script>

<link rel=stylesheet type=text/css href="{{ url_for('static', filename='style.css') }}">
31
thirumalaa srinivas