问题是:在Django模板中编写URL的正确方法是什么?
如果我明确地写它们(像这样):
some_template.html
{% extends "base.html" %}
{% block someblock %}
<a href="/some_url">Anchor</a>
{% endblock someblock %}
然后我决定更改我的URL方案我将不得不更改它们 - template和urls.py模块(似乎这种方式与DRY原则冲突)
另一种方法是使用变量(如下所示):
some_template.html
{% extends "base.html" %}
{% block someblock %}
<a href="{{ url_var }}">Anchor</a>
{% endblock someblock %}
views.py
def some_url (request):
return HttpResponse('Hello, world!')
def another_url (request):
return render_to_response('some_template.html', {'url_var': reverse('some_url')}
但是在这种情况下,如果我使用模板继承,我必须在上下文中指定所有url变量(也用于父模板)。可能它也不是一个好方法。
那么决定是什么?
答案 0 :(得分:12)
使用named urls和{% url %}
标记。
urlpatterns = [
#...
url(r'^articles/$', views.archive, name='news-archive'),
#...
]
{% url 'news-archive' %}