如何在Django模板中指定URL?

如何在Django模板中指定URL?,django,templates,Django,Templates,问题是:在Django模板中编写URL的正确方法是什么 如果我明确地写它们(如下所示): some_template.html {%extends“base.html”%} {%block someblock%} {%endblock someblock%} 然后我决定改变我的URL方案,我将不得不同时改变-template和URL.py模块(这种方式似乎与DRY原则相冲突) 另一种方法是使用变量(如下所示): some_template.html {%extends“base.html”%}

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

如果我明确地写它们(如下所示):

some_template.html
{%extends“base.html”%}
{%block someblock%}
{%endblock someblock%}
然后我决定改变我的URL方案,我将不得不同时改变-template和URL.py模块(这种方式似乎与DRY原则相冲突)

另一种方法是使用变量(如下所示):

some_template.html
{%extends“base.html”%}
{%block someblock%}
{%endblock someblock%}
views.py
定义一些url(请求):
返回HttpResponse('Hello,world!')
定义另一个_url(请求):
返回render_to_response('some_template.html',{'url_var':reverse('some_url')}
但在这种情况下,如果我使用模板继承,我必须在上下文中指定所有url变量(也用于父模板),这可能不是一个好方法

那么决定是什么呢?

使用和标记


谢谢。我猜Django一定有这样一种简单实用的方法。对所有托管文件使用{{STATIC\u URL}}和{MEDIA\u URL}也是一种很好的做法,例如href=“{{STATIC\u URL}}images/picture1.jpg”如果您的图像位于名为images的目录中,无论您的静态托管目录位于何处。如果url是硬编码url怎么办?我想在模板中使用该url a href?您可以参考以下问题:
some_template.html

{% extends "base.html" %}
{% block someblock %}
    <a href="/some_url">Anchor</a>
{% endblock someblock %}
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')}
urlpatterns = [
    #...
    url(r'^articles/$', views.archive, name='news-archive'),
    #...
]
{% url 'news-archive' %}