我在编写我的Django应用程序时硬编码模板中的所有URL时犯了一个错误。
例如,我的链接如下:
<a href="/course/63/">Advanced Basketweaving</a>
现在,我的客户坚决要求我将所有链接实例更改为
<a href="/class/63/">Advanced Basketweaving</a>
“class”取代“course”。
用爱默生的话说,愚蠢的一致性是小脑袋的大人物,所以我必须通过艰苦的寻找和替换操作来为我的错误付出代价。
在这里做什么是正确的?
答案 0 :(得分:6)
假设你的urls.py有这样一个条目:
url(r'^course/(?P<course_id>\d+)/$', view_course, name='view_course')
您可以在模板中使用url template tag:
<a href="{% url view_course course.id %}">Advanced Basketweaving</a>
然后,当您的客户要求您更改网址时,您只需在urls.py中进行一次更改。
url(r'^class/(?P<course_id>\d+)/$', view_course, name='view_course')
模板中不需要进行任何更改。
快乐搜索和替换 - 现在你知道下次了;)
答案 1 :(得分:2)
我认为标准方法是使用url
template tag:
{% url path.to.course_view 63 %}
...主要的好处是您不需要对URL进行硬编码。所以现在有点晚了,但是这次你也可以使用url
标签,以防明天客户回来并希望他们全部阅读/classes/class/63
- 此时你将会只需要更改URLconf文件中的单个URL模式。
答案 2 :(得分:1)
使用sed(在提交版本控制之后)。一个搜索并替换整个目录。
这是一个方法:http://www.grymoire.com/Unix/Sed.html
您可能还应该创建一个视图,将旧式网址重定向到新式网址,以防任何书签或您遗漏的任何链接。