django模板内部URL连接

时间:2019-03-16 22:24:03

标签: django

在我的django项目中,我具有如下所示的URL模式。

项目根目录中的urls.py:

urlpatterns = [
    path('', include('blog.urls')),
]

应用(博客)根目录中的urls.py:

urlpatterns = [
    path('', views.index, name='index'),
    path(
        'category/<str:category_id>',
        views.category_view, 
        name='category_view',
    ),
]

我想要做的是使用Django模板为每个类别创建超链接。像下面这样。

{% for category in categories %} .
    <a href="{{ {% url 'index' %}|add: {% url 'category_view' category %} }} " class="nav">
        {{category}}
    </a>
{% endfor %}

但是,它不起作用。有太多类别,我无法对其中任何一个进行硬编码,但必须使用django模板将网址设为“(域根)/类别/(类别名称)”。如何在模板中添加两个网址(就像Django所做的那样

path(A, include(B)) 

1 个答案:

答案 0 :(得分:1)

您可以在Category模型中定义一个Images.xcassets方法,这是一种更为简洁的解决方案:https://docs.djangoproject.com/en/2.1/ref/models/instances/#get-absolute-url

实施示例:

get_absolute_url

并在您的模板中:

from django.urls import reverse_lazy
# for django < 1.10 from django.core.urlresolvers import reverse_lazy

class Category(models.Model):
    ...
    def get_absolute_url(self):
       return reverse_lazy('category_view', category_id=self.id)