파이썬 보틀의 기본 4 특수 라우팅 (자신의 필터) 이야기
13813 단어 병파이썬@routewebserverbootstrap4
예제.py
app = Bottle()
def list_filter(config):
''' 正規表現文字列'''
delimiter = config or ','
regexp = r'\d+(%s\d)*' % re.escape(delimiter)
def to_python(match): #URLフラグメントをpython値に変換する
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/<ids:list>')
def follow_users(ids):
for id in ids:
...
다음 스니펫은 정규식을 사용하는 1,2,3,4와 같은 1자리 숫자를 쉼표로 구분한 라우팅을 가능하게 합니다.
regexp = r'\d+(%s\d)*' % re.escape(delimiter)
ex5.py
# bottleの基本5
from bottle import *
import re
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/<ids:list>')
def follow_users(ids):
x="\n".join(['<h3>%s</h3>'%x for x in ids])
for id in ids:
print(id)
return x
@app.error(404)
def error404(error):
return template("<h1>{{error_message}}</h1>", error_message="404 ページが存在しません。")
HOST,PORT='localhost',8080
if __name__ =='__main__':
app.run(host=HOST,port=PORT)
위의 프로그램을 실행하면 http://localhost:8080/follow/1,2,3
매개 변수는 배열을받을 수 있습니다.
또한 URL을 http://localhost:8080/follow/1,2,3,a로 하면 다음과 같이 됩니다.
regexp = r'\d+(%s\d)*' % re.escape(delimiter) 이 정규화 필터에서 제외되기 때문에
됩니다.
Rest API 등으로 가변 길이 파라미터를 사용하고 싶을 때 등의 예를 어떻게 나타냅니다.
Url http://localhost:8080/follow/도쿄, 지바, 이바라키
ex6.py
# bottleの基本6
from bottle import *
import re
app = Bottle()
def list_filter(config):
''' Matches a comma separated list of numbers. '''
delimiter = config or ','
regexp = r'.*' #文字だったらなんでも許可する
def to_python(match):
return map(str, 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/<ids:list>')
def follow_users(ids):
x="\n".join(['<h3>%s</h3>'%x for x in ids])
for id in ids:
print(id)
return x
@app.error(404)
def error404(error):
return template("<h1>{{error_message}}</h1>", error_message="404 ページが存在しません。")
HOST,PORT='localhost',8080
if __name__ =='__main__':
app.run(host=HOST,port=PORT)
Reference
이 문제에 관하여(파이썬 보틀의 기본 4 특수 라우팅 (자신의 필터) 이야기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hiratarich/items/e38638152d55fc0eb3cf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)