如何在Django模板中指定URL?

Ale*_*der 7 django templates

问题是:在Django模板中编写URL的正确方法是什么?

如果我明确地写它们(像这样):

some_template.html

{% extends "base.html" %}
{% block someblock %}
    <a href="/some_url">Anchor</a>
{% endblock someblock %}
Run Code Online (Sandbox Code Playgroud)

然后我决定改变我的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')}
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,如果我使用模板继承,我必须在上下文中指定所有url变量(也用于父模板).可能它也不是一个好方法.

那么决定是什么?

DrT*_*rsa 12

使用命名网址{% url %}标记.

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