Django2.0.1模板中在a标签使用get_absolute_url,网页上不显示,也没有报错。
模板代码:
{% for c in categories %}
<li {% if category.slug == c.slug %}class="selected"{% endif %}>
<a href="{{ c.get_absolute_url }}">{{ c.name }}</a>
</li>
{% endfor %}
将
{{ c.get_absolute_url }}
换成
{% url 'shop:product_list_by_category' c.slug %}
后就能正常显示,请问说什么原因导致的呢
models代码:
class Category(models.Model):
name = models.CharField(max_length=200,
db_index=True)
slug = models.SlugField(max_length=200,
db_index=True,
unique=True)
class Meta:
ordering = ('name',)
verbose_name = 'category'
verbose_name_plural = 'categories'
def __str__(self):
return self.name
def get_absolute_rul(self):
return reverse('shop:product_list_by_category',
args=[self.slug])
urls代码:
url(r'^(?P<category_slug>[-\w]+)/$', views.product_list,
name='product_list_by_category')
views代码:
def product_list(request, category_slug=None):
category = None
categories = Category.objects.all()
products = Product.objects.filter(available=True)
if category_slug:
category = get_object_or_404(Category, slug=category_slug)
products = products.filter(category=category)
return render(request,
'shop/product/list.html',
{'category': category,
'categories': categories,
'products': products})
get_absolute_url