Django2.0.1模板中的get_absolute_url不显示

新手上路,请多包涵

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})
阅读 3.3k
1 个回答

get_absolute_url

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题