2014-10-14 4 views
1

병 인스턴스를 사용하여 URI 경로를 탑재 할 때 사용자 지정 필터를 추가하려면 어떻게해야합니까? 대신 정규식의URL 사용자 지정 필터 병합

app = default_app() 
app.mount('/tenant/<:re:Foo([0-9]+)>/foos', app=foos_api()) 
app.mount('/tenant/<:re:Bar[0-9]+)>/bars', app=bars_api()) 

, 나는 아래와 같이 마운트 URI에서 사용자 지정 필터를 추가하고 싶습니다 :

app.mount('/tenant/<token:myFilter>/foos', app=foos_api()) 

그러나 병이 그것을 허용하지 않았다. Uri을 설치하는 동안 사용자 지정 HttpResponse를 확인하고 발생시키는 사용자 지정 필터를 추가하려면 어떻게합니까?

답변

0

Wildcard-filters은 0.10 버전부터 사용 가능합니다.

예 :

 
app = Bottle() 

def list_filter(config): 
    ''' Matches a comma separated list of numbers. ''' 
    delimiter = config or ',' 
    regexp = r'\d+(%s\d)*' % re.escape(delimiter) 

    def to_python(match): 
     return map(int, match.split(delimiter)) 

    def to_url(numbers): 
     return delimiter.join(map(str, numbers)) 

    return regexp, to_python, to_url 

app.router.add_filter('list', list_filter) 

@app.route('/follow/') 
def follow_users(ids): 
    for id in ids: 
+0

Thnx. 이 옵션은'route'와 함께 사용 가능하며 마운트에서는 사용할 수 없습니다. 마운트 중에 필터를 사용하고 싶습니다. –