我正在尝试将旧的django应用程序迁移到django 1.5,不同的html文件中有745个URL这样:
{% url url_name %}
如果我没错,这个已被弃用,不能再用于django 1.5(如here所述),我必须将所有这些转换为:
{% url 'url_name' %}
有没有想过这样做而不会发疯?也许,某种剧本,我不知道...... 我无法想象用路径替换它的方法。
我可能错过了一些明显的东西。
答案 0 :(得分:38)
注意:此命令具有破坏性。在运行之前使用版本控制或备份模板目录。
你可以使用sed。从您的模板目录(或目录)运行
sed -i -r -e "s#\{% url ([a-zA-Z0-9_.:-]+)#\{% url '\1'#g" *
表达式匹配{% url [view name]
,因此提供给url模板标记的参数将不受影响/不变。
以递归方式运行,
find . -type f -print0 | xargs -0 sed -i -r -e "s#\{% url ([a-zA-Z0-9_.:-]+)#\{% url '\1'#g"
此sed命令假定您的视图名称仅包含字母数字,冒号,短划线,句点和下划线 - 没有其他特殊字符。现在支持命名空间视图。
中的代码进行了测试答案 1 :(得分:2)
在http://djangosnippets.org/snippets/2905/
的python中还有一个解决方案片段只是警告,发现。 -type f -print0将找到像.git /或.hg /目录中的文件一样“隐藏”的文件,并可能损坏您的存储库或其他二进制文件。
如果你在django中使用通常的惯例,你的模板文件以.html结尾,你可以更谨慎地搜索:
find . -iname '*.html' -type f -print > file.list
首先检查file.list以检查哪些文件正在被修改,然后将它与sed命令放在一起