首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义Python支配标签元素

自定义Python支配标签元素
EN

Stack Overflow用户
提问于 2019-04-28 04:29:05
回答 2查看 2.2K关注 0票数 1

对于support both a JPEG and WEBP compressed image,我想在网页中包含以下代码:

代码语言:javascript
复制
<picture>
  <source srcset="img/awesomeWebPImage.webp" type="image/webp">
  <source srcset="img/creakyOldJPEG.jpg" type="image/jpeg"> 
  <img src="img/creakyOldJPEG.jpg" alt="Alt Text!">
</picture>

我一直在使用Python Dominate,它通常对我来说运行得很好。但我认为Dominate不支持Picture和Source标签。我可以将HTML添加为raw() Dominate标记,但是我想知道是否有一种方法可以让Dominate识别这些标记。

代码语言:javascript
复制
p = picture()
with p:
    source(srcset=image.split('.')[0]+'.webp', type="image/webp")
    source(srcset=image, type="image/jpeg")
    img(src=image, alt=imagealt)

我看到了这样的错误:

代码语言:javascript
复制
p = picture()
NameError: global name 'picture' is not defined
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-28 04:40:16

Dominate用于生成HTML(5)文档。

元素列表在tags.py文件中定义,请参阅GitHub:https://github.com/Knio/dominate/blob/master/dominate/tags.py中的存储库。

但是,picture不是一个标准的标签。

您可以查看lxml库,其中包含一个类似于Dominate的ElementMaker,可以轻松地构建XML树。请参阅E-Factory

例如:

代码语言:javascript
复制
>>> from lxml.builder import E

>>> def CLASS(*args): # class is a reserved word in Python
...     return {"class":' '.join(args)}

>>> html = page = (
...   E.html(       # create an Element called "html"
...     E.head(
...       E.title("This is a sample document")
...     ),
...     E.body(
...       E.h1("Hello!", CLASS("title")),
...       E.p("This is a paragraph with ", E.b("bold"), " text in it!"),
...       E.p("This is another paragraph, with a", "\n      ",
...         E.a("link", href="http://www.python.org"), "."),
...       E.p("Here are some reserved characters: <spam&egg>."),
...       etree.XML("<p>And finally an embedded XHTML fragment.</p>"),
...     )
...   )
... )

>>> print(etree.tostring(page, pretty_print=True))
<html>
  <head>
    <title>This is a sample document</title>
  </head>
  <body>
    <h1 class="title">Hello!</h1>
    <p>This is a paragraph with <b>bold</b> text in it!</p>
    <p>This is another paragraph, with a
      <a href="http://www.python.org">link</a>.</p>
    <p>Here are some reserved characters: &lt;spam&amp;egg&gt;.</p>
    <p>And finally an embedded XHTML fragment.</p>
  </body>
</html>
票数 0
EN

Stack Overflow用户

发布于 2020-04-14 20:17:05

您可以通过继承dominate.tags.html_tag类来创建图片类

代码语言:javascript
复制
from dominate.tags import html_tag

class picture(html_tag):
    pass

现在可以将其用作任何预定义的标记。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55884621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档