2016-07-12 6 views
1

正規表現を使用してフラスコにいくつかのURLを書きたいと思います。私はフラスコフラスコ内の正規表現

に私は

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 

api.add_resource(Handler1,'/<regex("^v1/$")>') 
api.add_resource(Handler2,'/<regex("^v1/(.+/)$")>') 

次試してみました。しかし、それは働いていないそれらを再作成したいこの

r'^v1/$' 
r'^v1/(.+/)$' 

のようなジャンゴでそれらを持っています。 エラー

ValueError: malformed url rule: '/<regex("^v1/$")>' 
+1

はこれを見てください:[そのURLルーティングでフラスコのサポート正規表現をしていますか?](http://stackoverflow.com/questions/5870188/does-flask URLのルーティングでサポートされている正規表現) –

+0

私はそのコードから上記の例だけを取った –

答えて

1

あなたはurl_mapルール値を提供していない表示。それは次のようになります。

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 

api.add_resource(Handler1,'/<regex("^v1/$"):just_v1>') 
api.add_resource(Handler2,'/<regex("^v1/(.+/)$"):v1_plus>') 

そして、あなたの実際のハンドラ(ここではHandler1Handler2)で。あなたは、パラメータとして、これらのマップされた値を受け取ります:

class Handler1(Resource): 
    def get(self, just_v1): 
     # you'll receive `v1/` as the value for `just_v1` 
+0

URLのためにまだ動作していません:http:// localhost:6000/v1 // –

+0

@ sarveshおそらくもっとコードを追加してくださいハンドラ、api/appオブジェクトの初期化などの質問で? – hjpotter92

+0

これはあなたが書いたのと同じコードです。正規表現から '^'を取り除くもう一つのことが働いています –