2012-08-16 18 views
11

Im Pyramiden-Framework werden die Funktionen route_path und route_url zum Generieren von URLs aus der Konfiguration der Routen verwendet. Also, wenn ich Route haben:Pyramiden route_url mit zusätzlichen Abfrageargumenten

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

Ich bin in der Lage, die URL zu generieren für sie

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

aber manchmal möchte ich kann zusätzliche get Parameter hinzufügen URL erzeugen wie:

idea/great?sort=asc 

Wie geht das?

Ich habe

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

Aber das hat nicht funktioniert.

Antwort

26

können Sie zusätzliche Abfrage Argumente in die URL übergibt den _query Wörterbuch

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

Wenn Sie Ihre eigene Frage beantworten, haben Sie keine Ausrede, sie nicht zu akzeptieren ;-) –

5

Wenn Sie Mako-Vorlagen verwenden, _query={...} wird nicht funktionieren; Stattdessen müssen Sie Folgendes tun:

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

Das Tupel von 2-Tupeln funktioniert wie ein Wörterbuch.

+0

Ich benutze Mako und _query {...} hat gut funktioniert, vielleicht können Sie uns sagen, warum es nicht funktioniert ? – CrackSmoker9000

+0

@ SSIgnatzSchönborn: Hast du deine '_query {...}' mit '$ {}' eingeschlossen? Es schien, dass Mako-Vorlagen geschachtelte Klammern nicht machen würden. Vielleicht hat eine neue Version das behoben? Ich könnte, wenn nötig, eine Repro versuchen, obwohl ich Mako seit einiger Zeit nicht mehr angefasst habe. – labreuer

Verwandte Themen