在我的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))
)
答案 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)