在web2py中使用HTML帮助器构建HTML标记有什么好处?

我想了解在web2py中使用 HTML助手而不是纯 HTML标记元素的好处.例如,我在web2py应用程序中读取以下HTML标记构建器代码(红色):
{{=A(IMG(_src=URL(r=request,c='static',f='up.png')),_href=URL(r=request,f='Vote',args=['up',item.id]))}}

通过纯HTML标记编写此代码可以得出以下结果:

<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.

相关文章

Mip是什么意思以及作用有哪些
怎么测试Mip页面运行情况
MIP安装的具体步骤有哪些
HTML添加超链接、锚点的方法及作用详解(附视频)
MIP的规则有哪些
Mip轮播图组件中的重要属性讲解