1

我有一个包含最新帖子标题列表的博客应用程序。现在列表项应该链接到它的内容。我的问题(类似的帖子)是,如果标题有一些空格,我会得到一个带有空格的 url,如果我使用:

<a href="{{  i.id  }}/{{  i.title  }}">{{ i.title }}

在我的模板中。我可以使用额外的URLField,但我不想手动创建对 url 友好的标题。这样做的常见方法是什么?

我的模型.py

class Post(models.Model):
    title = models.CharField(max_length=100)
    ...

    def __unicode__(self):
        return self.title

我的观点.py

def recentlyBlogged(request):
    lastPosts = Post.objects.filter(publication__gt = datetime.now() - timedelta(days=30))
    return render(request, "blog/blog.html", {'Posts': lastPosts})

我的模板

{% for i in Posts %}
    <ul id="latestPostsList">
        <li class="latestPostsListItem"><a href="{{  i.id  }}/{{  i.title  }}">{{ i }}</a></li>
{% endfor %}
    </ul>
4

1 回答 1

6

您正在寻找一个slug.

尝试这个

from django.template.defaultfilters import slugify
class Post(models.Model):
    title = models.CharField(max_length=100)
    ...

    def __unicode__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('post_url', args=(slugify(self.title), ))

在模板中,

<a href="{{  i.get_absolute_url }}">{{ i.title }}</a>

您可能也必须进行相应urls.py修改

url(r'post_url/(?P<slug>[\w-]+)/', view_name, name="post_url")
于 2013-10-07T14:14:42.777 回答