2016-07-12 3 views
1

정규 표현식을 사용하여 플라스크에 몇 개의 URL을 쓰고 싶습니다. 나는플라스크 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 -support-regular-expressions-url-routing) –

+0

위 예제에서 코드를 취했습니다. –

답변

1

당신은 url_map 규칙 값을 제공하지 않는보기. (여기 Handler1Handler2) 실제 핸들러에서,

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>') 

그리고; 그것은해야한다 당신은하고 매개 변수로 매핑 값을 받게됩니다 :

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

작성한 코드와 동일합니다. 정규 표현식에서'^'를 제거하는 것이 한 가지 더 효과적입니다. –