2012-08-16 8 views
11

Nel framework Pyramids, le funzioni route_path e route_url vengono utilizzate per generare URL dalla configurazione dei percorsi. Quindi, se ho percorso:Pyramids route_url con ulteriori argomenti di query

config.add_route('idea', 'ideas/{idea}') 

io sono in grado di generare l'URL per utilizzando

request.route_url('idea', idea="great"); 

Tuttavia, a volte mi può essere utile per aggiungere parametri ottenere ulteriori per generare url del tipo:

idea/great?sort=asc 

Come fare questo?

ho cercato

request.route_url('idea', idea='great', sort='asc') 

Ma che non ha funzionato.

risposta

26

È possibile aggiungere argomenti di query aggiuntivi per URL passando il _query dizionario

request.route_url('idea', idea='great', _query={'sort':'asc'}) 
+1

se stai rispondendo alla tua stessa domanda non hai scuse per non accettarlo ;-) –

5

Se si utilizza modelli di Mako, _query={...} non funziona; invece devi fare:

${request.route_url('idea', idea='great', _query=(('sort', 'asc'),))} 

La tupla di 2 tuple funziona come un dizionario.

+0

Sto usando mako e _query {...} ha funzionato bene, forse puoi dirci perché non funzionerà ? – CrackSmoker9000

+0

@ SSIgnatzSchönborn: hai racchiuso il tuo '_query {...}' con '$ {}'? Sembrava che i modelli Mako non potessero fare parentesi graffe nidificate. Forse una nuova versione ha rimediato a questo? Potrei provare una riproduzione se necessario, anche se non ho toccato Mako per un po '. – labreuer