python html标记接口

htmltag的Python项目详细描述


htmltag模块
================== <…注: < BR>
htmltag的最新完整文档可在以下位置找到:
http://liftoff.github.io/htmltag/ < BR>
此模块的最新版本可以从github获得:
https://github.com/liftoffsoftware/htmltag < BR>
htmltag.py-一个python(2*3)模块,用于包装任何想要的字符串
在HTML标记中。例子:: < BR>
>;>>来自htmltag import strong
>;>;打印(强("太强了!")
<;强>;太强了!<;/强>; < BR>
支持哪些标记?所有人!现代网络的一个重要方面
编程是使用自己的自定义标记的能力。例如:: < BR>
>>>>来自htmltag import foobar
>;>;foobar('自定义标记示例')
'自定义标记示例<;foobar>;' < BR>
要在标记中添加属性,只需将它们作为关键字参数传递: < BR>
>>gt;从htmltag导入
>;>;打印(a('awesome software',ref='http://liftoffsoftware.com/')
<;a href="http://liftoffsoftware.com/">;很棒的软件<;/a>; < BR>
解决保留字作为关键字参数的问题(即不能
让"class="foo")在关键字前面加上如下下划线: < BR>
>;>;>;来自htmltag import div
>;>;打印(div("example","someClass"))
<;div class="someclass">;示例<;div>; < BR>
另一个选项是传递
使用`\*\*运算符将关键字参数作为dict
<;http://docs.python.org/2/tutorial/controlflow.html解压缩参数列表>;。`_
就像这样: < BR>
>;>>来自HTMLtag导入li
>;>>打印(li("ceo","类":"user","data name":"dan mcdougall"})
<;li class="user"data name="dan mcdougall">;首席执行官<;li>; < BR>
如果要使用大写标记,只需将其导入大写: < BR>
>;>>来自htmltag import strong
>;>;打印(强("任何"))
<;强>;随便什么<;强>; < BR>
组合标签和内容
----
您可以组合多个标记来创建更大的html字符串,如下所示: < BR>
>;>;>;来自htmltag import table,tr,td
>>gt;打印(表格(
…tr(td('100'),td('200'),id="row1"),
…tr(td('150'),td('250'),id="行2"),
…)
<;表格>;<;tr id="row1">;<;td>;100<;/td>;<;td>;200<;/td>;<;/tr>;<;tr id="row2">;<;td>;150<;/td>;<;td>;250<;/td>;<;<;/tr>;<;<;/table>; < BR>
**注意:**如果您要执行上述操作,请使用*real*
模板语言/模块,而不是"htmltag"。你很可能在做
错误"如果你的代码中有类似的内容。例如,
尝试"Tornado"模板引擎
<;http://www.tornadorWeb.org/en/stable/template.html>;`。 < BR>
特殊字符
-----
引起诸如"<;"、">;"和"&;"等问题的特殊字符将是
自动转换为HTML实体。如果你不想那样
只需将字符串包装成:class:`htmltag.html`如下: < BR>
>;>;>;从htmltag导入html,a
>>>txt=html("<;strong>;我已经是html了。别逃避我!<;/强>;")
>>>;a(文本,ref="http://liftoffsoftware.com/")
我已经是HTML了。别逃避我!<;/强>;<;/a>;' < BR>
因为python不允许模块的名称中包含破折号(--),如果
需要创建这样的标记,只需使用下划线并更改其"标记名"
属性:


>>gt;打印(foo_u bar('baz'))\before
'<;餐饮酒吧>;baz<;/餐饮酒吧>;'
>>>foo_bar.tagname='食物条'
>>gt;打印(foo_u bar('baz'))\before
'<;食物棒>;baz<;/食物棒>;' < BR>
默认情况下,像"<;img>;"这样的自动关闭HTML标记不会包含结束斜杠。
要更改此行为(即对于XHTML),只需将"ending_slash"设置为"true": < BR>
>;>;>;来自htmltag import img
>>>img.结束斜杠=真
>;>img(src="http://somehost/images/image.png")
'<;img src="http://somehost/images/image.png"/>;'
< BR>
防止跨站点脚本(xss)
——--
默认情况下,将删除HTML标记中的所有不安全(XSS)内容: < BR>
>;>;>;来自htmltag import a,img
>;>a(img(src="javascript:alert('pwned!')"),href="http://hacker/")
'<;a href="http://hacker/">;(已删除)<;/a>;' < BR>
如果要更改此行为,请将标记的"安全模式"属性设置为
>: < BR>
>;>;>;来自htmltag import a,img
>>>a.安全模式=错误
>>>img.safe_mode=false
>;>a(img(src="javascript:alert('pwned!')"),href="http://hacker/")
<;a href="http://hacker/">;<;img src="javascript:alert(\'pwned!\")">;<;/a>;'

>;>;img.safe_mode=true;同上 < BR>
如果您愿意,也可以更改替换文本: < BR>
>;>;>;来自htmltag import a,img
>>>img.replacement="不不不!"
>;>a(img(src="javascript:alert('pwned!')"),href="http://hacker/")
'<;a href="http://hacker/">;不不不!&; < BR>
如果将"替换"设置为"实体",则被拒绝的HTML将转换为
这样的字符实体: < BR>
>;>;>;来自htmltag import a,img
>>>a.replacement="实体"
>>>img.replacement="实体"
>;>a(img(src="javascript:alert('pwned!')"),href="http://hacker/")
<;a href="http://hacker/">;<;img src="javascript:alert(\'pwned!\")">;<;/a>;' < BR>
还可以创建允许标记的白名单。所有其他标记
其中包含的内容将自动替换: < BR>
>;>;>;来自HTMLtag导入范围
>;>;白名单=['SPAN','B','I','STRONG']
>>>span.whitelist=白名单
>;>;span(html('this is<;b>;bold<;b>;new lib is<;script>;awesome();<;script>;'))
'<;SPAN>;这是<;B>;粗体<;/B>;新库是(删除)Awesome();(删除)<;/SPAN>;' < BR>
最后,"htmltag"返回的所有字符串实际上都是"str"的子类:
`~htmltag.html`。它有一个有用的"转义"属性: < BR>
>;>>来自htmltag导入地址
>;>;address.safe_mode=false关闭,这样我们就有了一个危险的示例;)
>;>;html=地址('1 Hacker Ln.,Nowhere,USA')
>>gt;打印(HTML)
<;地址>;1 Hacker Ln.,Nowhere,USA<;/地址>;
>>gt;打印(html.escaped)
<;地址>;1 Hacker Ln.,Nowhere,USA<;地址>; < BR>
如果您想确保没有可执行文件
结果会出现在程序的输出中。 < BR>< BR>
函数和类
=====================

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何从数组中打印int值?   prepared语句Java中奇怪的异常PreparedStatement:参数索引超出范围   封装如何在OOP Java中为主方法编码?   java某些手机显示快捷方式徽章需要什么权限?   java TextView不会随OnItemSelectedListener更改   java注释处理器不会自动触发吗?   java Spring JPA如何计算外键数   c#对于这个简单的OOAD问题,哪种设计最优雅?   java如何处理while循环中的异常?   Android Studio错误:进程'command'/home/draven/Downloads/安卓studio/jre/bin/java''结束,退出值为非零2   在使用Payara服务器的Vaadin应用程序中导航到根目录时,java将丢失上下文根目录   使用contentType application/json而不是application/jsonpatch+json的java修补程序   带有tomcat的java HAproxy连接不足   Java:在应用过滤器后创建一个简单的通用方法进行计数   java如何使用多态性创建一个实例化对象的方法,然后用它们高效地填充ArrayList?