如何在Django模板中指定URL?

时间:2011-05-05 13:00:47

标签: django templates

问题是:在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变量(也用于父模板)。可能它也不是一个好方法。

那么决定是什么?

1 个答案:

答案 0 :(得分:12)

使用named urls{% url %}标记。

urlpatterns = [
    #...
    url(r'^articles/$', views.archive, name='news-archive'),
    #...
]
{% url 'news-archive' %}