将HTML转换为Django模板

3

我希望创建一个Python脚本来修改HTML文档,但我有点迷失方向,不知道从哪里开始。我尝试了一些方法,但都没有成功,认为没有必要在此处发布它们。

问题是,在Django中,最好像这样写链接:

    <link href="{% static 'assets/css/cssfile.css' %}"/>
    <script src="{% static 'assets/js/jsfile.js' %}"></script>
    <img src="{% static 'assets/images/desktop.png' %}"/>

我有一个模板,实际上有几个模板,其中包含大量静态资产,以正常方式引用,如下所示:

<link href="assets/css/cssfile.css" rel="stylesheet"/>
<script src="assets/js/jsfile.js"></script>
<img src="assets/images/desktop.png"/>

因此,我一直在尝试创建一个脚本来查找“资产”,并编辑该行,用 href =“assets 替换为 href =“%static',然后在末尾添加'%} 。 我认为,这将是Django开发人员非常有价值的脚本,特别是那些使用模板的开发人员,也许已经存在于某个地方。

是否有自动将普通href / src属性转换为使用Django标记的方法?


1
我认为你的问题标题非常不清楚:“Python. 更改HTML文件。” 你能不能改进一下呢? - the
1
我不确定问题是什么。您是要寻求编写脚本的帮助,还是想看看是否已经存在这样的东西,或者其他什么问题? - Fulluphigh
1
获取一个支持正则表达式的编辑器。在vim中,它类似于 <ESC>:%s/\(src|href)="\(assets\/.+?\)/\1="{% static '\2' %}"/g<ENTER> - Paulo Scardine
1
@Robᵩ 怎么可能不是问题呢?我解释了一个问题,那么显而易见的潜在问题就是“我该如何正确地做到这一点?” :/ - Alejandro Veintimilla
1
你的帖子中没有问题。有几个陈述性语句表达了你的知识、愿望和猜测,但没有问题。隐含的问题通常只对提问者明显;在这种情况下,很明显每个回答者都推断出了不同的问题。对于 Stack Overflow,明确的问题将产生更高质量的答案。 - Robᵩ
显示剩余2条评论
3个回答

4
我假设您已经了解正则表达式。我喜欢使用支持正则表达式的编辑器来进行此类更改,然后只需要搜索和替换即可。如果您正在使用Django,JetBrains的PyCharm非常值得购买。我喜欢Vim。
每个编辑器在正则表达式捕获组的工作方式上都有一些变化(请查看您的编辑器/IDE文档),但这种正则表达式的一般格式是:
(src|href)="(assets\/.+?)"

它正在查找以 assets 开头的 src 或者 href 属性,并且捕获引号之间的所有内容。因此,捕获组 1 是属性,捕获组 2 是值 - 替换表达式为:

\1="{% static '\2' %}"

在某些编辑器中,您必须使用$1$2 而不是\1\2。在vim中,您必须转义括号。此外,某些编辑器不支持这种语法(.+?)中的非贪婪“捕获一切”,您可能需要使用[^"]+


1
谢谢。我不擅长正则表达式。不管怎样,我会尝试一下并告诉你结果的。顺便说一句,我使用Sublime Text 3。 - Alejandro Veintimilla
如果您启用正则表达式(左侧的小[.*]按钮),这将在st3搜索/替换框中逐字逐句地工作。 - Paulo Scardine

4

0

这是vi编辑器的命令。在逃逸模式下运行。

:%s / href =“([^ ] +)”/ href =“ {% static \ 1%}”/ g


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接