我正在撰写一个小型博客应用,并希望通过title-name和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>
但它也没有用。
答案 0 :(得分:2)
有一个slugify
模板过滤器可以将标题转换为slug。因此,您可以编写模板代码,如:
{% url 'blog.views.display', entry.title|slugify entry.id %}
但是,每当你处理slug时,你的模型上应该有一个slug
字段来永久存储值。至少,您应该接受César的建议并在get_absolute_url
中执行此操作。