将url标记迁移到django 1.5

时间:2012-11-27 18:29:31

标签: django django-templates django-1.5

我正在尝试将旧的django应用程序迁移到django 1.5,不同的html文件中有745个URL这样:

{% url url_name %}

如果我没错,这个已被弃用,不能再用于django 1.5(如here所述),我必须将所有这些转换为:

{% url 'url_name' %}

有没有想过这样做而不会发疯?也许,某种剧本,我不知道...... 我无法想象用路径替换它的方法。

我可能错过了一些明显的东西。

2 个答案:

答案 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命令假定您的视图名称仅包含字母数字,冒号,短划线,句点和下划线 - 没有其他特殊字符。现在支持命名空间视图。

针对此Django 1.4 url template tag Gist

中的代码进行了测试

答案 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命令放在一起