{{=A(IMG(_src=URL(r=request,c='static',f='up.png')),_href=URL(r=request,f='vote',args=['up',item.id]))}}
<a href="/reddish/default/vote/up/{{=item.id}}"><img src="/reddish/static/up.png"/></a>
我发现简单的HTML标记更容易阅读.但是,我想了解如何使用HTML助手有什么好处?
顺便说一下,我可以看到的一个好处就是HTML助手代码不需要明确地写出应用程序的名称,也就是红色.除此之外,还有其他使用HTML助手的好处吗?
解决方法
<a href="{{=URL('vote',item.id])}}"> <img src="{{=URL('static','up.png')}}"/></a>
始终使用URL()帮助器来编写URL,甚至在视图中.它处理传出的重写,它知道当前的应用程序(和控制器),所以你不必包括这些(这意味着如果你更改他们的名字,所有的URL仍然可以工作).此外,不再需要指定请求或使用c和f关键字(reddish是一个旧应用程序).
关于助手,一般的经验法则是使用它们,以防您需要在控制器,模型或模块中创建或操纵HTML,但在视图中使用常规HTML标记(与Python类似,如第二个示例) .一个例外是,当您需要在视图中构建一个复杂的HTML结构.在这种情况下,在单个Python代码块中操作帮助者可能更容易,而不是使用Python混合常规的HTML标签.例如,如果您在字典列表中使用数据(键“f1”,“f2”,“f3”),并且想要创建一个HTML表,则可以执行以下操作:
{{=TABLE([TR(row['f1'],row['f2'],row['f3']) for row in rows])}}
你可以做同样的事情混合HTML和Python,但它将会变得更长,更麻烦.
帮助者的另一个主要优点是它们创建了一个可以在Python代码中操作的server-side DOM.您最有可能在模型/控制器代码中创建的帮助器是通过FORM,sqlFORM,Crud和Auth系统)和表(通过sqlTABLE,sqlFORM.grid和Crud)创建的表单.这些帮助者自己包含其他帮助者,如表,div和ul,并且可以在将其序列化为HTML(for example)之前对其进行操作.
> A:与< a>< / a>相同,但也需要特殊的参数来处理Ajax回调.
> HTML:自动添加doctype字符串.
>输入,选项:取特殊值参数设置当前值,并自动处理设置选中和选中的属性.
> OL,UL,SELECT,TR,TBODY:像他们的HTML对应一样,除了它们自动将不是帮助器的未命名的参数(或列表/元组的元素)转换成适当的子元素(即< li> < option>,< td>和< tr>中). (上面的表格示例使用了这个事实 – TR()会将各个元素自动转换为单独的TD.)
最后,有一些帮助者有专门的功能:
> BEAUTIFY:构建复合对象的HTML表示形式.
>代码:< pre>< / pre>的替代方法它可以自动处理几种编程语言的代码突出显示和行编号.
> MARKMIN:将markmin代码转换为HTML.
> MENU:从嵌套的元组列表创建嵌套的ul.
TAG:通用标签生成器和HTML解析器.
> XML:封装不应转义或应消毒的文本.
有关详细信息,请参阅helpers documentation.