金字塔的htmldoom呈现库插件
pyramid-htmldoom的Python项目详细描述
金字塔空间
htmldoom金字塔渲染库插件
用法
安装
pip install pyramid_htmldoom
插入金字塔
应用程序py
fromwsgiref.simple_serverimportmake_serverfrompyramid.configimportConfiguratorfrompyramid.responseimportResponsefrompyramid.viewimportview_config@view_config(route_name="hello_htmldoom",renderer="templates.hello.py")defhello_htmldoom_view(request):"""htmldoom rendered view"""return{"data":"Hello htmldoom"}if__name__=="__main__":withConfigurator()asconfig:config.scan()config.include("pyramid_htmldoom")config.add_route("hello_htmldoom","/")app=config.make_wsgi_app()server=make_server("localhost",8080,app)server.serve_forever()
模板/hello.py
fromhtmldoomimportbaseasbfromhtmldoomimportelementsasefromhtmldoomimportrenderas_renderfromhtmldoomimportrendersdoctype=_render(b.doctype("html"))@renders(e.title()("{doctitle}"))defrender_title(doctitle:str)->dict:return{"doctitle":doctitle}@renders(e.body()("{content}"))defrender_body(data:dict)->None:raiseNotImplementedError("You are trying to render a layout.")@renders("{doctype}",e.html()(e.head()("{title}"),"{body}"))defrender_document(data:dict,title_renderer:callable=render_title,body_renderer:callable=render_body,)->dict:return{"doctype":doctype,"title":title_renderer(doctitle=data["data"]),"body":body_renderer(data=data),}defrender(data:dict)->str:returnrender_document(data=data)
模板/layout.py
fromhtmldoomimportelementsasefromhtmldoomimportrendersfrom.layoutimportrender_document@renders(e.body()(e.h3()("{contents}"),e.a(href="/")("Home"),e.br(),e.a(href="/jinja2")("jinja2"),))defrender_body(data:dict)->dict:return{"contents":data["data"]}defrender(data:dict)->str:returnrender_document(data,body_renderer=render_body)