flask第二十一篇——练习题
自定义url转化器
实现一个自定义的URL转换器,这个转换器需要满足的是获取从多少到多少的url,例如,你输入的地址是http://127.0.0.1:8000/1-5/
,那么页面返回[1,2,3,4,5]
。
答案:
1 # coding: utf-8 2 3 from flask import Flask 4 from werkzeug.routing import BaseConverter 5 6 app = Flask(__name__) # type: Flask 7 app.debug = True 8 9 @app.route('/') 10 def hello_world(): 11 return 'Hello World!' 12 13 class NumConverter(BaseConverter): 14 15 regex = r'\d+-\d+' 16 17 # 把url中的参数传到视图函数中,用to_python方法 18 def to_python(self, value): 19 tmp = value.split('-') 20 if int(tmp[0]) < int(tmp[-1]): 21 nums = range(int(tmp[0]), int(tmp[-1])+1) 22 return str(nums) 23 else: 24 return u'请检查传入的参数' 25 26 # 把类似[1,2,3]这样的列表转换成/1-3/这种url 27 def to_url(self, value): 28 min = value[0] 29 max = value[-1] 30 temp = '%s-%s' % (min, max) 31 return temp 32 33 app.url_map.converters['num'] = NumConverter 34 35 @app.route('/login/<num: values>/') 36 def numList(values): 37 return values 38 39 if __name__ == '__main__': 40 app.run()