29 lines
786 B
Python
29 lines
786 B
Python
import re
|
|
import sys
|
|
|
|
_URL_PLACEHOLDER_PATTERN = re.compile('<(.*?)>')
|
|
|
|
|
|
def get_pipe(name):
|
|
"""通过 mod.ClassName 导入自定义的PipeHandler"""
|
|
module_name, obj_name = name.rsplit('.', 1)
|
|
__import__(module_name)
|
|
module = sys.modules[module_name]
|
|
obj = getattr(module, obj_name)
|
|
return obj
|
|
|
|
|
|
def extract_placeholders(url):
|
|
"""
|
|
>>> res = extract_placeholders("/<service_name>/resource/<resource_id>/submit/")
|
|
>>> assert set(res) == {"service_name", "resource_id"}
|
|
:param url: request url name
|
|
:return: list of placeholder name
|
|
"""
|
|
return _URL_PLACEHOLDER_PATTERN.findall(url)
|
|
|
|
|
|
def replace_placeholder(url, placeholder_name, value):
|
|
return url.replace('<{}>'.format(placeholder_name), str(value))
|
|
|