Pylons 09x 到 Pylons 10 的 Web 应用迁移注意事项Word下载.docx

上传人:b****5 文档编号:21707719 上传时间:2023-01-31 格式:DOCX 页数:5 大小:19.35KB
下载 相关 举报
Pylons 09x 到 Pylons 10 的 Web 应用迁移注意事项Word下载.docx_第1页
第1页 / 共5页
Pylons 09x 到 Pylons 10 的 Web 应用迁移注意事项Word下载.docx_第2页
第2页 / 共5页
Pylons 09x 到 Pylons 10 的 Web 应用迁移注意事项Word下载.docx_第3页
第3页 / 共5页
Pylons 09x 到 Pylons 10 的 Web 应用迁移注意事项Word下载.docx_第4页
第4页 / 共5页
Pylons 09x 到 Pylons 10 的 Web 应用迁移注意事项Word下载.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Pylons 09x 到 Pylons 10 的 Web 应用迁移注意事项Word下载.docx

《Pylons 09x 到 Pylons 10 的 Web 应用迁移注意事项Word下载.docx》由会员分享,可在线阅读,更多相关《Pylons 09x 到 Pylons 10 的 Web 应用迁移注意事项Word下载.docx(5页珍藏版)》请在冰豆网上搜索。

Pylons 09x 到 Pylons 10 的 Web 应用迁移注意事项Word下载.docx

c=>

tmpl_context,g=>

app_globals

Pylons0.9.x中两个最常用的变量分别用一个字母标识。

g代表全局对象,c则代表控制器传递给模板的对象。

在Pylons1.0中,g需要替换做app_globals,c要替换做tmpl_context。

如果觉得c,g用起来更方便,也可以在代码中用如下语句建立别名

frompylonsimportapp_globalsasg

frompylonsimporttmpl_contextasc

但是,这不是万能的,在单元测试框架的代码中,TestResponse对象包含的tmpl_context就不能用c来代替。

因此建议彻底替换代码中的c和g对象名称。

redirect_to=>

redirect

在Pylons0.9.x代码中,网页重定向用的是redirect_to语句。

在Pylons1.0中要用redirect替换,同时注意修改相应的导入语法。

frompylons.controllers.utilimportredirect_to

或者

formroutesimportredirect_to

替换为

frompylons.controllers.utilimportredirect

url_for=>

url

构造url地址语法需要由pylons0.9.x的url_for换做url。

并注意对于非命名映射地址,至少需要提供controller和action参数。

pylons0.9.x在模板中的url_for往往可以省略的controller参数,在pylons1.0中不能省略。

例如:

下列0.9.x的调用

returnredirect_to(h.url_for(controller='

security'

action='

failed'

))

redirect_to(h.url_for(controller='

check'

h.url_for(action='

view'

id=logs[i].get('

revision'

'

'

)),...

替换为pylons1.0的调用

returnredirect(url(controller='

redirect(url(controller='

action='

index'

url(controller='

logs'

stylesheet_link_tag=>

stylesheet_link

旧版本WebHelpers的仿照ROR实现的rails类在新的WebHelpers被取消了,包含stylesheet文件的调用需要改写。

原语法

fromwebhelpers.rails.asset_tagimportstylesheet_link_tag

${h.stylesheet_link_tag('

/css/common'

media='

all'

)}

新语法

fromwebhelpers.html.tagsimportstylesheet_link

${h.stylesheet_link(h.url('

/css/common.css'

),media='

javascript_include_tag=>

javascript_link

同样由于WebHelpers.rails的取消,原来一条javascript_include_tag就可以包含所有相关javascript脚本的语句要用多条的javascript_link替代。

fromwebhelpers.rails.asset_tagimportjavascript_include_tag

${h.javascript_include_tag(builtins=True)

fromwebhelpers.html.tagsimportjavascript_link

${h.javascript_link(h.url('

/javascripts/prototype.js'

))}

/javascripts/scriptaculous.js'

/javascripts/unittest.js'

scriptaculous内置支持被取消

WebHelpers旧版本仿照ROR,使用scriptaculous实现页面特效。

但是新版本WebHelpers不再内置Javascript框架和特效支持,而是将选择权交给用户。

由用户决定是使用jQuery,Prototype,jQueryUI,scriptaculous或者ExtJs。

模板中原语法

complete='

hideNoticesPopup();

+h.visual_effect("

Highlight"

"

acl_msg"

duration=1),

直接调用scriptaculousJavaScript函数:

onComplete:

function(request){hideNoticesPopup();

newEffect.Highlight('

acl_msg'

{duration:

1});

},

form_remote_tag被取消

WebHelpers中仿照rails的form_remote_tag也不复存在。

直接写HTML吧,虽然麻烦些

<

%

 

context.write(

h.form_remote_tag(

html={'

id'

:

main_form'

url=h.url_for(action='

create_submit'

),

update="

message"

method='

post'

before='

showNoticesPopup()'

complete='

switch_message_box();

%>

模板中直接写Form元素进行替换:

formaction="

${h.url(controller="

repos"

)}"

id="

main_form"

method="

POST"

onsubmit="

showNoticesPopup();

newAjax.Updater('

message'

'

)}'

{asynchronous:

true,evalScripts:

true,method:

onComplete:

parameters:

Form.serialize(this)});

returnfalse;

"

>

传递给模板的外部变量直接显示要先转码

Pylons旧版本传递给模板的c变量可以包含HTML代码,并可以不经过处理直接显示在模板中:

divid="

logs"

${c.display}

/div>

新版本Pylons会对变量中HTML标签进行转换,要直接显示的写法如下

context.write(tmpl_context.display);

WebTest升级导致测试用例失效

测试框架中获取页面的webtest.TestResponse对象数据结构改变

∙status属性值由int改为字符串

∙res=self.app.get(url_for(controller='

authz'

assertres.status==302,res.status

要改为新语法:

res=self.app.get(url(controller='

assertres.status=="

302Found"

res.status

∙header属性改名为headers,header['

location'

]可以直接用location属性

assertres.header('

).endswith('

/login'

),res.header('

assertres.location.endswith('

),res.location

∙控制器传参c改名为tmpl_context

∙res=self.app.get(url(controller='

assertres.c.reposlist==[u'

/'

u'

document'

project1'

project2'

repos1'

repos2'

repos3'

],res.c.reposlist

assertres.tmpl_context.reposlist==[u'

],res.tmpl_context.reposlist

以上是向Pylons1.0迁移的主要注意事项。

既然Pylons已经升级为1.0版本,相信框架的稳定性将会得到改善。

梦醒了。

Pylons, 

Python

分享文章

这篇文章由 

蒋鑫 

于2010年6月1日-22:

28发表于北京群英汇信息技术有限公司,分类于 

Python。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1