2009-06-02 5 views
1

Ich verwende Routen, um alle URL-Mapping-Aufgaben auszuführen. Hier ist eine typische Route in meiner Anwendung:Routenparameter für die Vorverarbeitung in Python-Routen

map.routes('route', '/show/{title:[^/]+}', controller='generator', filter_=postprocess_title) 

Oft muss ich einige Zeichen Streifen (wie Leerzeichen und unterstreichen) aus dem {title} Parameter. Momentan gibt es einen Aufruf pro Methode im Controller an eine Funktion, die diese Konvertierung durchführt. Es ist nicht besonders praktisch und ich würde Routes gerne diese Arbeit machen. Ist es möglich?

Antwort

0

Ich bin nicht vertraut mit Routen und deshalb weiß ich nicht, ob das, was du bist, nachdem sie mit Routen möglich ist.

Aber vielleicht könnten Sie Ihre Controller-Methoden mit einem Dekorateur dekorieren, die Zeichen von Parameter-Streifen nach Bedarf?

Nicht sicher, ob das bequemer wäre. Aber für mich hat die Verwendung eines Dekorators ein anderes "Gefühl" als das Gleiche innerhalb der Controller-Methode.

Zum Beispiel:


@remove_spaces_from('title') 
def my_controller(...): 
    ... 

Wenn Sie mit Dekorateure nicht vertraut sind, eine Google-Suche nach „Python Dekorateure“ werden Sie beginnen. Ein wichtiger Punkt, den Sie sich merken sollten: Wenn für einen Decorator Argumente benötigt werden, benötigen Sie zwei Ebenen des Umbruchs im Decorator.

+0

Vielen Dank für Ihren Vorschlag, aber ich möchte Code-Duplikation so weit wie möglich vermeiden. –