简单快捷的html生成器,具有自然的语法对应关系(python>html)。不需要模板。服务于没有依赖关系的纯pythonic库。
airium的Python项目详细描述
空气
双向HTML
-python
转换器。在
主要特点:
- 简单,直截了当
- 无模板(只有python,你可以告别所有的模板)
- DOM结构严格由python缩进表示(使用上下文管理器)
- 提供比常规模板更干净的html
- 配备反向翻译:从html到python
使用airium
编写html文件
基本html页面(hello world)
fromairiumimportAiriuma=Airium()a('<!DOCTYPE html>')witha.html(lang="pl"):witha.head():a.meta(charset="utf-8")a.title(_t="Airium example")witha.body():witha.h3(id="id23409231",klass='main_header'):a("Hello World.")html=str(a)# casting to string extracts the valueprint(html)
打印这样一个字符串:
^{pr2}$div中的简单图像
fromairiumimportAiriuma=Airium()witha.div():a.img(src='source.png',alt='alt text')a('the text')html_str=str(a)print(html_str)
<div><imgsrc="source.png"alt="alt text"/> the text </div>
表格
fromairiumimportAiriuma=Airium()witha.table(id='table_372'):witha.tr(klass='header_row'):a.th(_t='no.')a.th(_t='Firstname')a.th(_t='Lastname')witha.tr():a.td(_t='1.')a.td(id='jbl',_t='Jill')a.td(_t='Smith')# can use _t or textwitha.tr():a.td(_t='2.')a.td(_t='Roland',id='rmd')a.td(_t='Mendel')table_str=str(a)print(table_str)# To store it to a file:withopen('/tmp/airium_www.example.com.py')asf:f.write(table_str)
现在table_str
包含这样一个字符串:
<tableid="table_372"><trclass="header_row"><th>no.</th><th>Firstname</th><th>Lastname</th></tr><tr><td>1.</td><tdid="jbl">Jill</td><td>Smith</td></tr><tr><td>2.</td><tdid="rmd">Roland</td><td>Mendel</td></tr></table>
只有一个子元素的链接快捷方式
New版本0.2.1
具有大量with
语句的结构:
fromairiumimportAiriuma=Airium()witha.article():witha.table():witha.thead():witha.tr():a.th(_t='Column 1')a.th(_t='Column 2')witha.tbody():witha.tr():witha.td():a.strong(_t='Value 1')a.td(_t='Value 2')table_str=str(a)print(table_str)
您可以使用相当于以下内容的快捷方式:
fromairiumimportAiriuma=Airium()witha.article().table():witha.thead().tr():a.th(_t="Column 1")a.th(_t="Column 2")witha.tbody().tr():a.td().strong(_t="Value 1")a.td(_t="Value 2")table_str=str(a)print(table_str)
<article><table><thead><tr><th>Column 1</th><th>Column 2</th></tr></thead><tbody><tr><td><strong>Value 1</strong></td><td>Value 2</td></tr></tbody></table></article>
反向翻译
Airium配备了一个传送机[html -> py]
。
它从给定的html字符串生成python代码。在
将反向转换器用作二进制文件:
调用命令行:
airium http://www.example.com
它将获取文档并将其转换为python代码。
代码调用airium
语句来重现给定的html文档。
它可能会提供一个线索-如何为给定的
使用airium
包的网页。在
要将翻译结果存储到文件中,请执行以下操作:
airium http://www.example.com > /tmp/airium_example_com.py
也可以解析本地html文件:
airium /path/to/your_file.html > /tmp/airium_my_file.py
您也可以尝试解析Django模板。如果不管用, 但可能不会有太多的问题需要解决。在
使用反向转换器作为python代码:
fromairiumimportfrom_html_to_airiumhtml_str="""\<!DOCTYPE html><html lang="pl"> <head> <meta charset="utf-8" /> <title>Airium example</title> </head> <body> <h3 id="id23409231" class="main_header"> Hello World. </h3> </body></html>"""py_str=from_html_to_airium(html_str)assertpy_str=="""\#!/usr/bin/env python# File generated by reverse AIRIUM translator (version 0.2.1).# Any change will be overridden on next run.# flake8: noqa E501 (line too long)from airium import Airiuma = Airium()a('<!DOCTYPE html>')with a.html(lang='pl'): with a.head(): a.meta(charset='utf-8') a.title(_t='Airium example') with a.body(): a.h3(klass='main_header', id='id23409231', _t='Hello World.')"""
Transpiler限制
so far in version 0.2.1:
翻译的结果不保留前导空格的确切数量 在
<pre>
标记中。它们在python代码中是缩进的。在当代码从python生成到html时,这不是问题。在
在虽然它保持了正确的标签结构,但transpiler没有 链接所有
在with
语句,因此在某些情况下生成 代码可能会缩进很多。在不会太快
在
安装
如果需要新的虚拟环境,请致电:
virtualenv venv
source venv/bin/activate
激活后,您可以安装airium,如下所示:
pip install airium
要使用反向翻译-需要另外两个包,请运行:
pip install requests==2.24 beautifulsoup4==4.9
检查翻板机是否工作:
airium --help
Enjoy!
- 项目
标签: