我正在使用带ListView
的Django pagination
来整理我的博文。我还为每个帖子设置了一个slug,但是当帖子进入第2页以后,点击页面上的帖子链接会将页码添加到网址中。例如:
点击第1页上的链接:www.foo.com/myslug
点击第x页(不是1)的链接:www.foo.com/x/myslug
如何确保点击该链接转到该帖子的网址?这就是我设置它的方式:
HTML扩展程序
{% block content %}
{% for post in object_list %}
...
<h4><a href="{{ post.get_absolute_url }}">{{ post.title }}</a></h4>
...
</div>
{% endfor %}
{% if page_obj.has_previous %}
<a id='newer' href="/{{ page_obj.previous_page_number }}/">← Newer </a>
{% endif %}
<span id='pages' class="text-muted">Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}</span>
{% if page_obj.has_next %}
<a id='older' href="/{{ page_obj.next_page_number }}/"> Older →</a>
{% endif %}
{% endblock %}
URLS
urlpatterns = patterns('',
# index
url(r'^(?P<page>\d+)?/?$', ListView.as_view(
model=Post,
paginate_by=5,
)),
# individual posts
url(r'^(?P<slug>[a-zA-Z0-9-]+)/?$', DetailView.as_view(model=Post,
)),
)
答案 0 :(得分:2)
这是因为没有正确定义get_absolute_url。您应该覆盖该方法以返回该帖子网址。根据您的代码:
def get_absolute_url(self):
return "/%s/" % self.slug