2011-09-19 13 views
91

La metà delle rotte di Flask richiede una variabile, /<variable>/add o /<variable>/remove. Come posso creare collegamenti a tali località?Creare URL dinamici in Flask con url_for()

url_for() accetta un argomento per la funzione da instradare ma non è possibile aggiungere argomenti?

risposta

150

Ci vuole argomenti chiave per le variabili:

url_for('add', variable=foo) 
+9

significa che la funzione è 'def add (variable)'? – endolith

+3

@endolith, sì. ** kwargs passato a 'url_for' passerà come parametri di funzione per percorsi di regole variabili in Flask – highvolt

26

Fare riferimento alla the Flask API document for flask.url_for()

Altri frammenti di esempio di utilizzo per il collegamento js o CSS al modello sono al di sotto.

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

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

url_for nel pallone viene utilizzato per la creazione di un URL per evitare il sovraccarico di dover cambiare gli URL in tutta l'applicazione (compreso nei modelli). Senza url_for, se c'è una modifica nell'URL di root della tua app, devi cambiarla in ogni pagina in cui è presente il link.

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

Può essere usato come:

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

Ora, se si dispone di un collegamento alla pagina di indice: è possibile utilizzare questo:

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

si può fare un per esempio:

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

Per quanto sopra si può usare:

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

come non si può semplicemente passare i parametri!

+0

Ho una domanda, nel primo esempio il metodo index è stato passato come stringa mentre nel secondo metodo, la find_question viene passata come variabile. Perché? –

+0

@AnandTyagi È questo che intendi? [Routing URL] (http://flask.pocoo.org/docs/0.12/quickstart/#url-building) –

Problemi correlati