2009-06-02 8 views
1

J'utilise Routes pour effectuer tous les travaux de mappage d'URL. Voici un itinéraire typique de ma demande:Pré-traitement des paramètres de routage dans les itinéraires Python

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

Très souvent, je dois enlever certains caractères (comme les espaces et underscore) du paramètre {title}. Actuellement, il y a un appel par méthode dans le contrôleur à une fonction qui effectue cette conversion. Ce n'est pas très pratique et j'aimerais que Routes fasse ce travail. C'est possible?

Répondre

0

Je ne suis pas familier avec Routes, et donc je ne sais pas si ce que vous recherchez est possible avec Routes.

Mais peut-être pourriez-vous décorer les méthodes de votre contrôleur avec un décorateur qui supprime les caractères des paramètres si nécessaire?

Je ne sais pas si ce serait plus pratique. Mais pour moi, utiliser un décorateur a un sens différent de celui de faire la même chose en ligne dans la méthode du contrôleur.

Par exemple:


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

Si vous n'êtes pas familier avec les décorateurs, une recherche google pour « décorateurs python » vous commencer. Un point clé à retenir: Lorsque des arguments sont nécessaires pour un décorateur, vous avez besoin de deux niveaux d'habillage dans le décorateur.

+0

Nous vous remercions de votre suggestion, mais j'aimerais éviter autant que possible la duplication de code. –

Questions connexes