django - 如何在 Django 模板中指定 URL?

标签 django templates

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

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

some_template.html

{% extends "base.html" %}
{% block someblock %}
    <a href="/some_url">Anchor</a>
{% endblock someblock %}

然后我决定更改我的 URL 方案我将不得不同时更改模板和 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 变量(也适用于父模板)。可能这也不是一个好方法。

那么决定是什么?

最佳答案

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

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

关于django - 如何在 Django 模板中指定 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5898099/

相关文章:

Python/Django - 按天和周按总和构建列表

javascript - CSRF 和 CORS 与 Django(REST 框架)

c++:为什么在提供模板函数的所有类型参数时出现错误,但在省略参数时正常?

django - 如何开始构建 django 网站以及 django 如何构建页面?

python - Jinja 中是否有用于记录宏的官方格式?

templates - 有没有办法用dust.js 覆盖一层以上的继承值?

c++ - "Builder"函数模板

用于将 QVariant 转换为 {自定义类型的 c++ 函数指针

python - 乌鸦不向 Sentry 报告异常

c++ - 使用模板将数组作为引用作为参数传递