Migrate url tags to django 1.5

风流意气都作罢 提交于 2019-12-02 20:24:53

NOTE: This command is destructive. Use version control or backup your templates directory before running it.

You can use sed. From your template directory (or directories) run

sed -i -r -e "s#\{% url ([a-zA-Z0-9_.:-]+)#\{% url '\1'#g" *

The expression matches {% url [view name], so arguments provided to the url template tag will be unaffected/unchanged.

To run it recursively,

find . -type f -print0 | xargs -0 sed -i -r -e "s#\{% url ([a-zA-Z0-9_.:-]+)#\{% url '\1'#g"

This sed command assumes your view names only contain alphanumerics, colons, dashes, periods and underscores - no other special characters. Now supports namespaced views.

Tested against the tags in this Django 1.4 url template tag Gist

There is also a snippet with a solution in python at http://djangosnippets.org/snippets/2905/

Just a warning, the find . -type f -print0 will find files that are "hidden" like files in your .git/ or .hg/ directories and may corrupt your repository or other binary files.

If you use the usual convention in django with your template files ending in .html, you can search more cautiously with:

find . -iname '*.html' -type f -print > file.list

examine file.list first to check which files are being modified before putting it together with the sed command

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!