本文整理汇总了Python中werkzeug.routing.Map类的典型用法代码示例。如果您正苦于以下问题:Python Map类的具体用法?Python Map怎么用?Python Map使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Map类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: build_urls
def build_urls():
views = {
'famfamfam/get' : famfamfam.get,
'admin/configuration' : configure.nut,
'admin/eb' : configure.eb,
'admin/eb_rec' : configure.eb_rec,
'admin/eb_fix' : configure.fix_nodes,
'admin/index' : configure.list
}
# secure the admin area
from util.decorators import require_admin
for key in views:
if key.startswith('admin'):
views[key] = require_admin(views[key])
admin_tabs = []
url_map = Map(rules())
for nut in NutSettings().nuts:
mod = __import__('hazel.nuts.%s.urls' % nut, fromlist=['hazel.nuts.%s' % nut])
pub, pub_views, admin, admin_views, tabs = mod.build_rules()
url_map.add(EndpointPrefix('nut:%s/' % nut, pub))
url_map.add(EndpointPrefix('nut:%s/' % nut,
[Submount('/admin/%s' % nut, admin)]))
admin_tabs.extend([(rule.endpoint, name) for name, rule in tabs])
views.update([(rule.endpoint, fn) for rule, fn in pub_views])
# secure admin
views.update([(rule.endpoint, require_admin(fn)) for rule, fn in admin_views])
# tell the layout engine about the enabled modules
from util.decorators import jinja_const
jinja_const('admin_tabs', admin_tabs)
return url_map, views
开发者ID:4416,项目名称:hazel-cms,代码行数:35,代码来源:urls.py
示例2: InputReqApp
class InputReqApp(object):
def __init__(self):
self.url_map = Map()
self.url_map.add(Rule('/test/<path:url>', endpoint=self.direct_input_request))
self.url_map.add(Rule('/test-postreq', endpoint=self.post_fullrequest))
def direct_input_request(self, environ, url=''):
inputreq = DirectWSGIInputRequest(environ)
return inputreq.reconstruct_request(url)
def post_fullrequest(self, environ):
params = dict(parse_qsl(environ.get('QUERY_STRING', '')))
inputreq = POSTInputRequest(environ)
return inputreq.reconstruct_request(params['url'])
def __call__(self, environ, start_response):
urls = self.url_map.bind_to_environ(environ)
try:
endpoint, args = urls.match()
except HTTPException as e:
return e(environ, start_response)
result = endpoint(environ, **args)
start_response('200 OK', [('Content-Type', 'text/plain; charset=utf-8')])
return [result]
开发者ID:ikreymer,项目名称:pywb,代码行数:25,代码来源:test_inputreq.py
示例3: handle_url
def handle_url(aConfig, environ, session):
global gTileCache
def handle_index(environ, session):
statuscode, mimetype, body = 403, 'text/plain', 'Access deny'
return statuscode, mimetype, body
user_id = None
if session and '_id' in session:
user_id = session['_id']
statuscode, mimetype, body = 200, 'text/json', '{}'
app = aConfig['gConfig']['wsgi']['application']
urllist = []
for key in aConfig['gConfig']['applications'][app]['url_mapping'].keys():
urllist.append(Rule(key, endpoint=aConfig['gConfig']['applications'][app]['url_mapping'][key]))
urlmap = Map(urllist, converters={'bool': BooleanConverter})
urls = urlmap.bind_to_environ(environ)
querydict, buf, stream = get_querydict_by_GET_POST(environ)
try:
endpoint, args = urls.match()
if endpoint == 'handle_index':
statuscode, mimetype, body = handle_index(environ, session)
else:
body = json.dumps({'result':u'access_deny'}, ensure_ascii=True, indent=4)
# except HTTPException, e:
except Exception as e:
traceback.print_exc()
body = json.dumps({'result':u'error:%s' % e.message}, ensure_ascii=True, indent=4)
# if session:
# aConfig['gSessionStore'].save(session)
# for k in hh.keys():
# headers[k] = hh[k]
return statuscode, mimetype, body
开发者ID:kamijawa,项目名称:pi_server,代码行数:35,代码来源:tile.py
示例4: Cup
class Cup(object):
def __init__(self, with_static=True):
if with_static:
self.wsgi_app = SharedDataMiddleware(self.wsgi_app, {
'/static': os.path.join(os.path.dirname(__file__), 'static')
})
self.url_map = Map()
self.views = {}
def add_url_rule(self, url, endpt, func):
self.url_map.add(Rule(url, endpoint=endpt))
self.views[endpt] = func
def getView(self, endpoint):
return self.views[endpoint]
def route(self, url):
def decorator(func):
self.add_url_rule(url, func.__name__, func)
def decorated(*args, **kwargs):
func(*args, **kwargs)
return decorated
return decorator
def dispatch_request(self, request):
adapter = self.url_map.bind_to_environ(request.environ)
try:
endpoint, values = adapter.match()
data = self.getView(endpoint)(request, **values)
return Response(data, mimetype="text/html")
except HTTPException, e:
print "e"
return e
开发者ID:raymondzeng,项目名称:Cup,代码行数:33,代码来源:cup.py
示例5: application
def application(environ, start_response):
request = Request(environ)
if os.path.exists(PATH):
with open(PATH) as yaml:
data = load(yaml)
else:
data = {}
urls = {}
for reference in data.get("references", []):
urls[reference.get("alias")] = reference.get("url")
url_map = Map([
Rule('/<alias>', endpoint='shortener'),
])
adapter = url_map.bind_to_environ(request.environ)
endpoint, values = adapter.match()
alias = values["alias"]
if alias not in urls:
raise NotFound()
response = redirect(urls[alias])
return response(environ, start_response)
开发者ID:gurunars,项目名称:portfolio,代码行数:29,代码来源:url_shortener.py
示例6: handle_url
def handle_url(aConfig, environ, session):
def handle_index(environ, session):
statuscode, mimetype, body = handle_static(
aConfig, environ, aConfig["gConfig"]["applications"][app]["static"]["page"]["indexpage"]
)
return statuscode, mimetype, body
statuscode, mimetype, body = 200, "text/json", "{}"
app = aConfig["gConfig"]["wsgi"]["application"]
urllist = []
for key in aConfig["gConfig"]["applications"][app]["url_mapping"].keys():
urllist.append(Rule(key, endpoint=aConfig["gConfig"]["applications"][app]["url_mapping"][key]))
urlmap = Map(urllist, converters={"bool": BooleanConverter})
urls = urlmap.bind_to_environ(environ)
try:
endpoint, args = urls.match()
if endpoint == "handle_index":
statuscode, mimetype, body = handle_index(environ, session)
else:
body = json.dumps({"result": u"access_deny"}, ensure_ascii=True, indent=4)
# except HTTPException, e:
except Exception as e:
traceback.print_exc()
body = json.dumps({"result": u"error:%s" % e.message}, ensure_ascii=True, indent=4)
return statuscode, mimetype, body
开发者ID:kamijawa,项目名称:pi_server,代码行数:27,代码来源:staticapp.py
示例7: __init__
class App:
def __init__(self):
self._url_map = Map(strict_slashes=False)
def route(self, rule, **kwargs):
def decorator(func):
kwargs['endpoint'] = func
self._url_map.add(Rule(rule, **kwargs))
return func
return decorator
def _dispatch(self, request):
adapter = self._url_map.bind_to_environ(request.environ)
try:
endpoint, values = adapter.match()
return endpoint(request, **values)
except HTTPException as e:
return e
def __call__(self, env, sr):
request = AppRequest(env)
response = self._dispatch(request)
after_handlers = getattr(request, '_after_request_handlers', None)
if after_handlers:
for h in after_handlers:
response = h(response) or response
return response(env, sr)
开发者ID:baverman,项目名称:vial-http,代码行数:27,代码来源:dswf.py
示例8: make_url_map
def make_url_map(self):
url_map = Map()
for provider in self._providers:
rule = provider.get_url_rule()
rule.endpoint = provider
url_map.add(rule)
return url_map
开发者ID:abael,项目名称:nameko,代码行数:7,代码来源:server.py
示例9: test_basic_building
def test_basic_building():
"""Basic URL building"""
map = Map([
Rule('/', endpoint='index'),
Rule('/foo', endpoint='foo'),
Rule('/bar/<baz>', endpoint='bar'),
Rule('/bar/<int:bazi>', endpoint='bari'),
Rule('/bar/<float:bazf>', endpoint='barf'),
Rule('/bar/<path:bazp>', endpoint='barp'),
Rule('/hehe', endpoint='blah', subdomain='blah')
])
adapter = map.bind('example.org', '/', subdomain='blah')
assert adapter.build('index', {}) == 'http://example.org/'
assert adapter.build('foo', {}) == 'http://example.org/foo'
assert adapter.build('bar', {'baz': 'blub'}) == 'http://example.org/bar/blub'
assert adapter.build('bari', {'bazi': 50}) == 'http://example.org/bar/50'
assert adapter.build('barf', {'bazf': 0.815}) == 'http://example.org/bar/0.815'
assert adapter.build('barp', {'bazp': 'la/di'}) == 'http://example.org/bar/la/di'
assert adapter.build('blah', {}) == '/hehe'
assert_raises(BuildError, lambda: adapter.build('urks'))
adapter = map.bind('example.org', '/test', subdomain='blah')
assert adapter.build('index', {}) == 'http://example.org/test/'
assert adapter.build('foo', {}) == 'http://example.org/test/foo'
assert adapter.build('bar', {'baz': 'blub'}) == 'http://example.org/test/bar/blub'
assert adapter.build('bari', {'bazi': 50}) == 'http://example.org/test/bar/50'
assert adapter.build('barf', {'bazf': 0.815}) == 'http://example.org/test/bar/0.815'
assert adapter.build('barp', {'bazp': 'la/di'}) == 'http://example.org/test/bar/la/di'
assert adapter.build('blah', {}) == '/test/hehe'
开发者ID:fmw,项目名称:werkzeug,代码行数:30,代码来源:test_routing.py
示例10: test_path
def test_path():
"""URL routing path converter behavior"""
map = Map(
[
Rule("/", defaults={"name": "FrontPage"}, endpoint="page"),
Rule("/Special", endpoint="special"),
Rule("/<int:year>", endpoint="year"),
Rule("/<path:name>", endpoint="page"),
Rule("/<path:name>/edit", endpoint="editpage"),
Rule("/<path:name>/silly/<path:name2>", endpoint="sillypage"),
Rule("/<path:name>/silly/<path:name2>/edit", endpoint="editsillypage"),
Rule("/Talk:<path:name>", endpoint="talk"),
Rule("/User:<username>", endpoint="user"),
Rule("/User:<username>/<path:name>", endpoint="userpage"),
Rule("/Files/<path:file>", endpoint="files"),
]
)
adapter = map.bind("example.org", "/")
assert adapter.match("/") == ("page", {"name": "FrontPage"})
assert_raises(RequestRedirect, lambda: adapter.match("/FrontPage"))
assert adapter.match("/Special") == ("special", {})
assert adapter.match("/2007") == ("year", {"year": 2007})
assert adapter.match("/Some/Page") == ("page", {"name": "Some/Page"})
assert adapter.match("/Some/Page/edit") == ("editpage", {"name": "Some/Page"})
assert adapter.match("/Foo/silly/bar") == ("sillypage", {"name": "Foo", "name2": "bar"})
assert adapter.match("/Foo/silly/bar/edit") == ("editsillypage", {"name": "Foo", "name2": "bar"})
assert adapter.match("/Talk:Foo/Bar") == ("talk", {"name": "Foo/Bar"})
assert adapter.match("/User:thomas") == ("user", {"username": "thomas"})
assert adapter.match("/User:thomas/projects/werkzeug") == (
"userpage",
{"username": "thomas", "name": "projects/werkzeug"},
)
assert adapter.match("/Files/downloads/werkzeug/0.2.zip") == ("files", {"file": "downloads/werkzeug/0.2.zip"})
开发者ID:t11e,项目名称:werkzeug,代码行数:34,代码来源:test_routing.py
示例11: test_adapter_url_parameter_sorting
def test_adapter_url_parameter_sorting():
"""Optional adapter URL parameter sorting"""
map = Map([Rule("/", endpoint="index")], sort_parameters=True, sort_key=lambda x: x[1])
adapter = map.bind("localhost", "/")
assert (
adapter.build("index", {"x": 20, "y": 10, "z": 30}, force_external=True) == "http://localhost/?y=10&x=20&z=30"
)
开发者ID:t11e,项目名称:werkzeug,代码行数:7,代码来源:test_routing.py
示例12: test_request_direct_charset_bug
def test_request_direct_charset_bug():
map = Map([Rule(u'/öäü/')])
adapter = map.bind('localhost', '/')
try:
adapter.match(u'/öäü')
except RequestRedirect, e:
assert e.new_url == 'http://localhost/%C3%B6%C3%A4%C3%BC/'
开发者ID:d1on,项目名称:werkzeug,代码行数:7,代码来源:test_routing.py
示例13: Dispatcher
class Dispatcher(object):
"""Dispatch requests based on a WSGI environment.
The routes are loaded from the <package>/config/routes file, and each line should be blank,
a comment, or one of the following:
<route> <page class>
<route> redirect:<url>
<route> template:<filename>
"""
def __init__(self, app):
"""Load the URL routing map and instantiate the responders."""
self.app = app
# Set up URL routing
self.map = Map()
routes_file = file(os.path.join(app.directory, 'config', 'routes'), 'r')
for line in routes_file:
# Split the line from one of the documented formats
parts = line.split()
if len(parts) == 0 or parts[0][0] == '#':
# Ignore comments and blank lines
continue
if len(parts) != 2:
raise ConfigurationError("Error in routes file: %s" % line)
path, destination = parts
if ':' in destination:
# Responder explicitly specified
responder_name, extra = destination.split(':', 1)
responder_type = responder_types.get(responder_name, None)
if responder_type is None:
raise ConfigurationError("Invalid destination '%s' in routes file" % destination)
responder = responder_type(extra)
else:
# Default to PageResponder if there's no ':' in the destination
responder = PageResponder(destination)
for p, r in responder.get_routes(path): # FIXME: Better names for p and r
rule = Rule(p, endpoint=r, methods=r.methods)
self.map.add(rule)
self.map.update()
def dispatch(self, environ):
try:
request = Request(environ)
urls = self.map.bind_to_environ(environ)
responder, args = urls.match()
with Context(self.app, environ, request, args) as context:
for hook in self.app.get_hook_functions('pre-request'):
hook(context)
context.response = responder(context)
for hook in self.app.get_hook_functions('post-request'):
context.response = hook(context) or context.response
return context.response
# HTTPExceptions are returned as the response, while any other
# exceptions are re-raised to be either caught by the in-browser debugger
# or generate a 500 response.
except HTTPException, e:
return e
开发者ID:danellis,项目名称:dextrose,代码行数:60,代码来源:dispatcher.py
示例14: test_adapter_url_parameter_sorting
def test_adapter_url_parameter_sorting():
"""Optional adapter URL parameter sorting"""
map = Map([Rule('/', endpoint='index')], sort_parameters=True,
sort_key=lambda x: x[1])
adapter = map.bind('localhost', '/')
assert adapter.build('index', {'x': 20, 'y': 10, 'z': 30},
force_external=True) == 'http://localhost/?y=10&x=20&z=30'
开发者ID:fmw,项目名称:werkzeug,代码行数:7,代码来源:test_routing.py
示例15: app
def app(req):
url_map =Map([Rule('/',endpoint='index'),
Rule('/form',endpoint='form'),
Rule('/form/<id>', endpoint='form1')])
urls = url_map.bind_to_environ(req.environ)
return urls.dispatch(lambda e,v: route[e](req,**v))
开发者ID:bTanya,项目名称:14.07,代码行数:7,代码来源:1.py
示例16: test_external_building_with_port_bind_to_environ_wrong_servername
def test_external_building_with_port_bind_to_environ_wrong_servername():
"""Test external URL building with port number (map.bind_to_environ) with wrong server name raises ValueError"""
map = Map([
Rule('/', endpoint='index'),
])
environ = create_environ('/', 'http://example.org:5000/')
assert_raises(ValueError, lambda: map.bind_to_environ(environ, server_name="example.org"))
开发者ID:fmw,项目名称:werkzeug,代码行数:7,代码来源:test_routing.py
示例17: __init__
def __init__(self, rules=None, default_subdomain='', charset='utf-8',
strict_slashes=True, redirect_defaults=True,
converters=None, sort_parameters=False, sort_key=None,
encoding_errors='replace', host_matching=False):
_Map.__init__(self, rules, default_subdomain, charset, strict_slashes,
redirect_defaults, converters, sort_parameters,
sort_key, encoding_errors, host_matching)
开发者ID:matejamateusz,项目名称:OLDPLOTTING_FLASK,代码行数:7,代码来源:flask_mime.py
示例18: Mapper
class Mapper(object):
def __init__(self, import_name):
self.import_name = import_name
self.url_map = Map()
self.url_views = {}
@property
def url_rules(self):
return self.url_map.iter_rules()
def build_endpoint(self, endpoint):
return '{0}.{1}'.format(self.import_name, endpoint)
def add_route(self, rule, endpoint, view_func=None, **options):
options['endpoint'] = endpoint
self.url_map.add(Rule(rule, **options))
if view_func:
self.url_views[endpoint] = view_func
def route(self, rule, **options):
def decorator(func):
endpoint = options.pop('endpoint', func.__name__)
endpoint = self.build_endpoint(endpoint)
self.add_route(rule, endpoint, func, **options)
return func
return decorator
def add_map(self, map, prefix='', rule_factory=Submount):
self.url_views.update(map.url_views)
self.url_map.add(
rule_factory('/%s' % prefix.rstrip('/'), map.url_rules)
)
开发者ID:naskoro,项目名称:naya,代码行数:32,代码来源:__init__.py
示例19: test_path
def test_path():
"""URL routing path converter behavior"""
map = Map([
Rule('/', defaults={'name': 'FrontPage'}, endpoint='page'),
Rule('/Special', endpoint='special'),
Rule('/<int:year>', endpoint='year'),
Rule('/<path:name>', endpoint='page'),
Rule('/<path:name>/edit', endpoint='editpage'),
Rule('/<path:name>/silly/<path:name2>', endpoint='sillypage'),
Rule('/<path:name>/silly/<path:name2>/edit', endpoint='editsillypage'),
Rule('/Talk:<path:name>', endpoint='talk'),
Rule('/User:<username>', endpoint='user'),
Rule('/User:<username>/<path:name>', endpoint='userpage'),
Rule('/Files/<path:file>', endpoint='files'),
])
adapter = map.bind('example.org', '/')
assert adapter.match('/') == ('page', {'name':'FrontPage'})
assert_raises(RequestRedirect, lambda: adapter.match('/FrontPage'))
assert adapter.match('/Special') == ('special', {})
assert adapter.match('/2007') == ('year', {'year':2007})
assert adapter.match('/Some/Page') == ('page', {'name':'Some/Page'})
assert adapter.match('/Some/Page/edit') == ('editpage', {'name':'Some/Page'})
assert adapter.match('/Foo/silly/bar') == ('sillypage', {'name':'Foo', 'name2':'bar'})
assert adapter.match('/Foo/silly/bar/edit') == ('editsillypage', {'name':'Foo', 'name2':'bar'})
assert adapter.match('/Talk:Foo/Bar') == ('talk', {'name':'Foo/Bar'})
assert adapter.match('/User:thomas') == ('user', {'username':'thomas'})
assert adapter.match('/User:thomas/projects/werkzeug') == ('userpage', {'username':'thomas', 'name':'projects/werkzeug'})
assert adapter.match('/Files/downloads/werkzeug/0.2.zip') == ('files', {'file':'downloads/werkzeug/0.2.zip'})
开发者ID:fmw,项目名称:werkzeug,代码行数:29,代码来源:test_routing.py
示例20: RestRouter
class RestRouter(object):
def __init__(self, json_encoder):
self.handlers = {}
self.map = Map()
self.encoder = json_encoder
def add_rule(self, rule, fn):
if rule.endpoint in self.handlers:
raise ValueError("Endpoint {} already present".format(rule.endpoint))
self.handlers[rule.endpoint] = fn
self.map.add(rule)
def add_resource(self, service, path):
rules = RestRules(path)
for method in RestRules.METHOD_NAMES:
if callable(getattr(service, method, None)):
self.add_rule(getattr(rules, method), getattr(service, method))
def __call__(self, request, response):
matcher = self.map.bind_to_environ(request.environ)
endpoint, args = matcher.match()
handler = self.handlers[endpoint]
result = handler(args, request)
if isinstance(result, Response):
return result
elif result is not None:
response.set_data(self.encoder.encode(result))
response.content_type = 'application/json'
return response
else:
return response
开发者ID:rdarder,项目名称:timezones,代码行数:31,代码来源:rest_server.py
注:本文中的werkzeug.routing.Map类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论