2017-10-17 20 views
0

Je suis un débutant avec Flacon et python. Je veux créer une fonction de gestionnaire pour les chemins qui commencent par "/ favicon". Par exemple, les éléments suivants doivent être traités:Flask chemin de l'application pour les chemins qui commencent par X

  • /favicon
  • /faviconFOO
  • /favicon_bar
  • /favicon/buzz
  • /favicon1337

Ce qui suit ne doit pas être manipulé :

  • /favico
  • /favicon
  • /whatever

Si Flask supporeted wildcards, il serait "/ favicon *"

EDIT: Je ne ai pas besoin de soutien pour les expressions régulières.

Comment est-ce que je peux faire ceci?

+0

Vous voulez que tous les itinéraires: 'favicon',' faviconFOO', 'favicon_bar' etc. au point même poignée, alors vous pouvez regarder à ce [fil] (https://stackoverflow.com/questions/5870188/does-flask-support-regular-expressions-in-its-url-routing) – ZdaR

+0

Oui exactement. Si c'était un joker ce serait/favicon * –

+0

Je ne dirais pas que c'est un doublon parce qu'il est beaucoup plus spécifique que l'autre question. En outre, je m'en fiche si elle est résolue en utilisant regex ou non. –

Répondre

1

je ferais une url catch-all puis, essayez d'utiliser un wildcard avec de l 'intérieur de la vue:

@app.route('/<path:text>', methods=['GET', 'POST']) 
def all_routes(text): 
    if 'favicon' in text 
     #do stuff 
    else: 
     return redirect(url_for('404_error')) 

vous pouvez utiliser string aussi:

@app.route('/<string:text>', methods=['GEt']) 

mais en utilisant string wouldn » t attraper / cordes. donc, si une chaîne est utilisée, url's contenant quelque chose comme favicon/buzz ne serait pas mis en cache par elle, path dans le cas contraire, elle saisirait aussi /. Donc, vous devriez aller avec la première option.

Vous pouvez consulter la documentation routing dans le site du ballon. et vous should créer une meilleure condition que if x in Y parce qu'il échouera si vous passé quelque chose comme /thingfavicon