2012-01-04 22 views
5

nel pallone si scrive il percorso al di sopra della dichiarazione del metodo in questo modo:url struttura e forma i messaggi con la boccetta

@app.route('/search/<location>/') 
def search(): 
    return render_template('search.html') 

Tuttavia in HTML come forma di pubblicheremo all'URL in questo modo

www.myapp.com/search?location=paris 

quest'ultimo sembra restituire un 404 dall'applicazione in cui

www.myapp.com/search/london 

restituirà come previsto.

Sono sicuro che c'è un pezzo del puzzle che non sto ottenendo, ma sicuramente il motore di routing considererà i parametri della stringa di query per soddisfare i requisiti delle regole.

Se non ciò che è la soluzione ottimale per questo scenario come io sono sicuro che il 90% degli sviluppatori deve arrivare a questo punto ...

grazie in anticipo.

risposta

9

I parametri della query non sono inclusi come parte della corrispondenza del percorso, né vengono inseriti negli argomenti della funzione. Vengono iniettate solo le porzioni di URL corrispondenti. Quello che stai cercando è request.args (parametri di query GET), request.form (POST) o request.values (combinato).

Si potrebbe fare qualcosa di simile, se si voleva supportare sia:

@app.route('/search/<location>') 
def search(location=None): 
    location = location or request.args.get('location') 
    # perform search 

Anche se, supponendo che si consiglia di cercare altri parametri, probabilmente il modo migliore per farlo sarebbe più vicino a:

def _search(location=None,other_param=None): 
    # perform search 

@app.route('/search') 
def search_custom(): 
    location = request.args.get('location') 
    # ... get other params too ... 
    return _search(location=location, other params ...) 

@app.route('/search/<location>') 
def search_location(location): 
    return _search(location=location) 

E così via.

+2

great thanks! provenienti da uno sfondo .net alcune cose che dovrebbero essere ovvie sono a volte inafferrabili. in avanti e verso l'alto! – Jay

+0

Questa è stata un'esplorazione utile di request.args, request.form e request.values ​​- grazie – ghukill

Problemi correlati