rewrite
模块¶
此文件是Web2py Web框架的一部分
版权所有:Massimo di Pierro<mdipierro@cs.depaul.edu>
许可证:lgplv3(http://www.gnu.org/licenses/lgpl.html)
rewrite解析传入的URL,并为glion.html.url格式化传出的URL。
此外,它基于(可选)用户提供的routes.py重写传入和传出URL,这也允许重写某些错误消息。
根据是否定义了“routers”,routers.py支持两种类型的URL重写。有关其他文档,请参阅router.example.py和routes.example.py。
- class gluon.rewrite.MapUrlIn(request=None, env=None)[源代码]¶
基类:
object
映射传入URL的逻辑
- property arg0¶
返回第一个参数
- property harg0¶
返回带有可选连字符映射的第一个参数
- class gluon.rewrite.MapUrlOut(request, env, application, controller, function, args, other, scheme, host, port, language)[源代码]¶
基类:
object
映射传出URL的逻辑
- gluon.rewrite.compile_regex(k, v, env=None)[源代码]¶
预处理并编译routes_app/in/out中的正则表达式,生成的regex将与以下形式的模式匹配:
[remote address]:[protocol]://[host]:[method] [path]
我们允许对输入使用缩写的regex;这里我们尝试完成它们。
- gluon.rewrite.filter_url(url, method='get', remote='0.0.0.0', out=False, app=False, lang=None, domain=(None, None), env=False, scheme=None, host=None, port=None, language=None)[源代码]¶
doctest/unittest接口到regex_filter_in()和regex_filter_out()。
- gluon.rewrite.load(routes='routes.py', app=None, data=None, rdict=None)[源代码]¶
加载:读取(if file)和解析路由存储结果以参数形式(在Web2py初始化时从main.py调用)如果存在数据,则使用它而不是routes.py内容。如果存在RDICT,则必须是用于路由器的dict(单元测试)
- gluon.rewrite.map_url_out(request, env, application, controller, function, args, other, scheme, host, port, language=None)[源代码]¶
提供传出URL的/a/c/f(或/a/lang/c/f)部分
基本规则是我们只能进行映射URL的转换才能反转。
假设传入的参数是a、c、f、args、lang,并且路由器的默认值是da、dc、df、dl。
如果args=[]且lang=none或dl:,我们可以执行这些转换:
/da/dc/df => / /a/dc/df => /a /a/c/df => /a/c
我们还希望能够从存在函数/参数的URL中剥离默认应用程序或应用程序/控制器,因此:
/da/c/f/args => /c/f/args /da/dc/f/args => /f/args
我们使用 [应用] 和 [控制器] 和功能抑制不明确的遗漏。
我们假设语言名称不会与a/c/f名称冲突。
- gluon.rewrite.try_redirect_on_error(http_object, request, ticket=None)[源代码]¶
从main.wsgibase调用以重写HTTP响应