【发布时间】:2014-10-23 22:56:21
【问题描述】:
我正在使用 Django ListView 和 pagination 来组织我的博客文章。我还为每个帖子设置了一个 slug,但是一旦帖子进入第 2 页以上,单击页面上的帖子链接会将页码添加到 url。例如:
点击第 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 %}
网址
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,
)),
)
【问题讨论】:
-
为什么不对页码使用查询字符串变量并将其排除在 URL 路由之外?
标签: django url django-urls