0

我正在编写一个小型博客应用程序,并希望可以通过标题名称和 id 的组合访问其条目。

Expression:    ^blog/([\d\w\-_]+)\-(\d+)/$
Example URL:   localhost:8000/blog/django-is-awesome-231/

第一部分是通过将博客条目的标题全部转换为小写并将空格和特殊字符替换为-.

我想知道如何从条目中反转这样的 URL。

{% for entry in entries %}
  <li><a href="{% url 'blog.views.display', entry.title entry.id %}">{{ entry.title }}</a></li>
{% endfor %}

但它告诉我没有找到反向匹配。

谢谢,


我只是这样尝试:

def get_mangled_name(self):
    """ Returns the mangled name of the entry. """
    title = self.title.lower().replace(' ', '-')
    title = ''.join(filter(lambda x: x in string.letters, title))
    if title.endswith('-'):
        title = title[:1]
    return '%s-%d' % (title, self.id)


<li><a href="{% url 'blog.views.display' entry.get_mangled_name %}">{{ entry.title }}</a></li>

但它也没有奏效。

4

1 回答 1

3

有一个slugify模板过滤器可以将标题转换为 slug。因此,您可以编写模板代码,例如:

{% url 'blog.views.display', entry.title|slugify entry.id %}

但是,任何时候处理 slug 时,实际上都应该slug在模型上有一个字段来永久存储该值。至少,您应该采纳 César 的建议并get_absolute_url改为执行此操作。

于 2012-09-24T15:08:12.727 回答