rewrite 模块

此文件是Web2py Web框架的一部分
版权所有:Massimo di Pierro<mdipierro@cs.depaul.edu>

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

返回带有可选连字符映射的第一个参数

map_app()[源代码]

确定应用程序名称

map_controller()[源代码]

识别控制器

map_function()[源代码]

处理函数扩展

map_language()[源代码]

处理语言(无连字符映射)

map_prefix()[源代码]

条带路径前缀(如果完整存在)

map_root_static()[源代码]

处理根静态文件(无连字符映射)

根静态文件是其传入的URL期望它位于根目录的文件,通常是robots.txt&favicon.ico。

map_static()[源代码]

处理静态文件文件匹配但没有连字符映射

pop_arg_if(dopop)[源代码]

有条件地删除第一个参数并返回新的第一个参数

sluggify()[源代码]
update_request()[源代码]

自构建env.request-uri的更新请求使env中的HTTP头的大小写版本变为小写。

validate_args()[源代码]

根据验证模式检查参数

class gluon.rewrite.MapUrlOut(request, env, application, controller, function, args, other, scheme, host, port, language)[源代码]

基类:object

映射传出URL的逻辑

acf()[源代码]

将组件转换为/app/lang/controller/function

build_acf()[源代码]

从组件生成A/C/F

omit_acf()[源代码]

省略了我们可以用的信用证

omit_lang()[源代码]

尽可能省略语言

gluon.rewrite.compile_regex(k, v, env=None)[源代码]

预处理并编译routes_app/in/out中的正则表达式,生成的regex将与以下形式的模式匹配:

[remote address]:[protocol]://[host]:[method] [path]

我们允许对输入使用缩写的regex;这里我们尝试完成它们。

gluon.rewrite.filter_err(status, application='app', ticket='tkt')[源代码]

到路由错误的doctest/unittest接口

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.fixup_missing_path_info(environ)[源代码]
gluon.rewrite.get_effective_router(appname)[源代码]

返回指定应用程序的有效路由器的私有副本

gluon.rewrite.invalid_url(routes)[源代码]
gluon.rewrite.load(routes='routes.py', app=None, data=None, rdict=None)[源代码]

加载:读取(if file)和解析路由存储结果以参数形式(在Web2py初始化时从main.py调用)如果存在数据,则使用它而不是routes.py内容。如果存在RDICT,则必须是用于路由器的dict(单元测试)

gluon.rewrite.load_routers(all_apps)[源代码]

路由器的加载时间后处理

gluon.rewrite.log_rewrite(string)[源代码]

在routes.py控制下的日志重写活动

gluon.rewrite.map_url_in(request, env, app=False)[源代码]

路由传入URL

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.regex_filter_in(e)[源代码]

Regex重写传入的URL

gluon.rewrite.regex_filter_out(url, e=None)[源代码]

Regex重写传出URL

gluon.rewrite.regex_select(env=None, app=None, request=None)[源代码]

为当前请求选择一组regex rewrite参数

gluon.rewrite.regex_uri(e, regexes, tag, default=None)[源代码]

根据正则表达式列表筛选传入的URI

gluon.rewrite.regex_url_in(request, environ)[源代码]

重写并解析传入的URL

gluon.rewrite.sluggify(key)[源代码]
gluon.rewrite.try_redirect_on_error(http_object, request, ticket=None)[源代码]

从main.wsgibase调用以重写HTTP响应

gluon.rewrite.try_rewrite_on_error(http_response, request, environ, ticket=None)[源代码]

从main.wsgibase调用以重写HTTP响应。

gluon.rewrite.url_in(request, environ)[源代码]

解析并重写传入的URL

gluon.rewrite.url_out(request, environ, application, controller, function, args, other, scheme, host, port, language=None)[源代码]

汇编和重写传出URL