我在django 1.8中有一个应用程序,我的问题是参数?我的目标是地址为127.0.0.0.1/blog/1-和搜索结果。我可以指望提示吗?
我的网址:
urlpatterns = [
url(r'^$', MyListView.as_view(), name='list'),
url(r'/(?P<slug>[-w]+)/(?P<pk>d+)$', views.BlogDetailView.as_view(), name='blog_detail'),
]
我的观点:
class MyListView(ListView):
model = models.Blog
queryset = models.Blog.objects.order_by('-pub_date')
template_name = 'blog/blog_list.html'
context_object_name = 'blog_list'
paginate_by = 10
模板中的代码
{% if is_paginated %}
<ul class="pagination">
{% if page_obj.has_previous %}
<li><a href="?page={{ page_obj.previous_page_number }}">«</a></li>
{% else %}
<li class="disabled"><span>«</span></li>
{% endif %}
{% for i in paginator.page_range %}
{% if page_obj.number == i %}
<li class="active"><span>{{ i }} <span class="sr-only">(current)</span></span></li>
{% else %}
<li><a href="?page={{ i }}">{{ i }}</a></li>
{% endif %}
{% endfor %}
{% if page_obj.has_next %}
<li><a href="?page={{ page_obj.next_page_number }}">»</a></li>
{% else %}
<li class="disabled"><span>»</span></li>
{% endif %}
</ul>
{% endif %}
很难管理您想要的方式。如果您的分页关键字有问题,则可以通过在ListView中设置" page_kwarg"来更改用于分页的参数。像这样
class MyListView(ListView):
model = models.Blog
queryset = models.Blog.objects.order_by('-pub_date')
template_name = 'blog/blog_list.html'
context_object_name = 'blog_list'
paginate_by = 10
page_kwarg = 'my_page_number'
现在您可以使用127.0.0.0.1/blog?my_page_number=2
进行拖放
或者如果真的想将页码作为URL paraameter传递,则在列表视图中覆盖paginate_queryset
方法,并在此处覆盖page_kwarg
。
有关来源,请参阅此处https://github.com/django/django/blob/master/master/django/django/views/generic/list.py.py#l54