我有一个详细的类别视图,如果我在URL直接传递它的工作只是很好。但如果我想传递它作为一个链接在我的模板它得到一个错误。以下是我的模型:
class Category(models.Model):
name = models.CharField(max_length=255)
def __str__(self):
return (self.name)
def get_absolute_url(self):
return reverse("home")
以下是我的观点:
class CategoryClassView(TemplateView):
model = Category
template_name = "categories.html"
def get_context_data(self, **kwargs):
cats = kwargs.get("cats")
category_posts = Category.objects.filter(name=cats.replace('-', ' '))
context = {'cats':cats.replace('-', ' ').title(), 'category_posts':category_posts}
return context
这是我的网址:
path('category/<str:cats>/', CategoryClassView.as_view(), name='category')
这是我的模板:
{% extends "base.html" %}
{% block content %}
{% for category in category_list %}
<div class="card">
<div class="card-header">
<span class="font-weight-bold"><a href="">{{ category.name}}</a></span> ·
</div>
</div>
{% endfor %}
{% endblock content %}
你能给你的答案写一个更详细的解释吗?为什么只是传递{% url '类别' %}不工作?为了更好地理解,也可以提供一些有用材料的链接。
你应该这样做,因为你在url中有参数:
{% url 'category' cats=category.name %}
也可以用as:
{% url 'category' %}?cats={{ category.name }}