2013-01-16 8 views
6

の整数で終わるURLのルートを定義しここに私のPythonコードの一部です。パイソン

www.example.com/and/boy/12などの整数で終わるURLをこの関数にリダイレクトするパラメータルールを宣言するにはどうすればよいですか?

私はFlaskフレームワークを使用しています。

+0

使用 '/と/少年/ '()デコレータ。他の変更は必要ありません。 –

+0

@NitzanShaked OPは整数で終わるすべてのURLのルールを必要とします。 '/ and/girl/'、 '//boyoy/'、 '/// anything/'、 'anything/'、 '/ 'はすべて同じルールに従います – elssar

答えて

9

Werkzeug routingが必要です。

完全なコード:

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

数字なしの2番目の部分URLのためにwww.example.com/asd/ase/avi78のように働いていません。 – iJade

+0

私が与えた正規表現は、数字のないURLをチェックするだけです。 ''。+ ''を使ってすべてのURLにマッチさせるか、探しているものを教えてください。 – ATOzTOA

+0

更新... – ATOzTOA

11

あなたはちょうどあなたのパラメータに "と/少年" を追加する必要があります。ルートで

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

私は、www.example.com/and/boy/12のような整数で終わるURLを処理する一般的なルールを意味していました – iJade