2014-08-27 68 views
3

我想创建一个可以更改html文档的python脚本,我有点迷路,不知道从哪里开始,我已经尝试过几个不起作用的东西所有,并不认为它值得在这里发表。将HTML转换为Django模板

的问题是,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="{% static'更换href="assets ...然后在最后添加' %}。我认为这对于使用模板的django开发人员来说是一个非常有价值的脚本,可能它已经在某处。

是否有任何自动化的方式来转换正常的href/src属性使用Django标签?

+1

我认为你的问题的标题是非常不清楚的:“Python。改变一个HTML文件。”你能改善它吗? – guaka 2014-08-27 19:13:57

+1

我不确定问题是什么。你正在寻找写脚本的帮助,或者看看这样的事情是否已经存在,或者..? – Fulluphigh 2014-08-27 19:16:08

+1

获取正则表达式支持的编辑器。在vim上是类似':%s/\(src | href)=“\(assets \ /.+?\)/ \ 1 =”{%static'\ 2'%}“/ g ' – 2014-08-27 19:18:19

回答

4

我假设你知道正则表达式。我最喜欢的方式,使这种改变是使用正则表达式支持的编辑器,然后它是一个搜索&替换的问题。如果你使用的是Django,jetbrains的pycharm是非常值得的。我喜欢vim。

每个编辑器有捕获群体如何正则表达式工作的一些变化(请检查您的编辑器/ IDE文档),但是这样的正则表达式的一般格式为:

(src|href)="(assets\/.+?)" 

它寻找一个srchref属性起始于assets,捕获报价之间的所有内容。因此,捕获组1的属性和捕获组2的值 - 替换表达式是:

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

在一些编辑器,你必须使用$1$2代替\1\2。在vim中,你必须逃离parens IICR。另外,有些编辑不支持这种语法(.+?),因为非贪婪的“捕获所有内容”,您可能不得不使用[^"]+

+1

谢谢,我不擅长正则表达式,无论如何,我会尝试并让它你知道它是怎么回事。我使用Sublime Text 3 btw。 – alejoss 2014-08-27 19:51:37

+0

如果启用正则表达式(左侧的小型[。*]'按钮),这将在st3搜索/替换框中起作用。 – 2014-08-27 20:57:06

+0

它工作。先生,谢谢。 – alejoss 2014-08-29 16:51:16