2013-01-16 1 views
6

Hier ist ein Teil meines Python-Code:für url eine Route definiert in Python mit Integer-Endung ist

@app.route("/<int:param>/") 
def go_to(param): 
    return param 

Die obige Funktion Routen eine URL wie www.example.com/12 zu dieser Funktion.

Wie kann ich eine Parameterregel deklarieren, um URLs, die mit ganzen Zahlen enden, wie www.example.com/and/boy/12, an diese Funktion umzuleiten?

Ich benutze das Flask-Framework.

+0

Gebrauch '/ und/Junge/' in der Route() Dekorateur. Keine andere Änderung benötigt. –

+0

@NitzanShaked das OP möchte eine Regel für jede URL, die mit einer Ganzzahl endet. '/ und/girl/', '/ und/boy/', '/ und/alles/', 'alles/' und '/ ' würde alle die gleiche Regel – elssar

Antwort

9

Sie benötigen Werkzeug routing.

komplette Code:

from flask import Flask 
from werkzeug.routing import BaseConverter 

app = Flask(__name__) 

class RegexConverter(BaseConverter): 
     def __init__(self, url_map, *items): 
       super(RegexConverter, self).__init__(url_map) 
       self.regex = items[0] 

app.url_map.converters['regex'] = RegexConverter 

# To get all URLs ending with "/number" 
@app.route("/<regex('.*\/([0-9]+)'):param>/") 
def go_to_one(param): 
    return param.split("/")[-1] 

# To get all URLs ending with a number 
@app.route("/<regex('.*([0-9]+)'):param>/") 
def go_to_one(param): 
    return param.split("/")[-1] 

# To get all URLs without a number 
@app.route("/<regex('[^0-9]+'):param>/") 
def go_to_two(param): 
    return param 

@app.route('/') 
def hello_world(): 
    return 'Hello World!' 

if __name__ == '__main__': 
    app.run() 
+0

der zweite Teil ohne eine Nummer folgen funktioniert nicht für URL wie www.example.com/asd/ase/avi78 – iJade

+0

Die Regex, die ich angegeben habe, nur für URLs ohne Zahlen überprüft, deshalb. Verwenden Sie einfach ". +", Um alle URLs zu finden, oder sagen Sie mir, wonach Sie suchen. – ATOzTOA

+0

Aktualisierte Antwort ... – ATOzTOA

11

Sie müssen nur hinzufügen "und/Junge", um Ihre Parameter:

@app.route("/and/boy/<int:param>/") 
def go_to(param): 
    return param 
+0

ich meinte eine allgemeine Regel, url zu behandeln, die mit einer ganzen Zahl wie www.example.com/and/boy/12 endet – iJade

Verwandte Themen