码迷,mamicode.com
首页 > Web开发 > 详细

flask url转换器,添加另类的url

时间:2017-02-26 16:44:15      阅读:481      评论:0      收藏:0      [点我收藏+]

标签:添加   开发   sel   转换   values   lis   int   urllib   flask   

import urllib

from flask import Flask

from werkzeug.routing import BaseConverter

app = Flask(__name__)


class ListConverter(BaseConverter):
    def __init__(self, url_map, separator="+"):
        super(ListConverter, self).__init__(url_map)
        self.separator = urllib.unquote(separator)

    def to_python(self, value):
        return value.split(self.separator)

    def to_url(self, values):
        return self.separator.join(BaseConverter.to_url(value) 
        	                         for value in values)

‘‘‘
app.url_map.converters
{‘default‘: <class ‘werkzeug.routing.UnicodeConverter‘>,
 ‘string‘: <class ‘werkzeug.routing.UnicodeConverter‘>,
 ‘int‘: <class ‘werkzeug.routing.IntegerConverter‘>, 
‘path‘: <class ‘werkzeug.routing.PathConverter‘>,
 ‘float‘: <class ‘werkzeug.routing.FloatConverter‘>, 
‘any‘: <class ‘werkzeug.routing.AnyConverter‘>,
 ‘uuid‘: <class ‘werkzeug.routing.UUIDConverter‘>}
‘‘‘
app.url_map.converters[‘list‘] = ListConverter


@app.route(‘/list1/<list:page_names>/‘)
def list1(page_names):
    return ‘Separator: {} {}‘.format("+", page_names)


@app.route(‘/list2/<list(separator=u"|"):page_names>/‘)
def list2(page_names):
    return ‘Separator: {} {}‘.format("|", page_names)


if __name__ == "__main__":
	app.run()

http://127.0.0.1:5000/list1/a+b/

Separator: + [u‘a‘, u‘b‘]

http://127.0.0.1:5000/list2/a|b/

Separator: | [u‘a‘, u‘b‘]

 自定义转换器需要集成BaseConverter,实现to_python和to_url两个方法

to_python:将路径转化为一个Python对象

to_url:      将路径转化为符合URL格式

摘自《Python Web开发实战》

flask url转换器,添加另类的url

标签:添加   开发   sel   转换   values   lis   int   urllib   flask   

原文地址:http://www.cnblogs.com/jachin/p/6444699.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!