【发布时间】:2020-06-19 19:51:18
【问题描述】:
我不明白为什么 Django 分页有时会在 URL 中添加空格 (%20):
https://example.com/accounts/?page=2%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20&q=%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20&ordering=-date_joined
如果我单击Next 或特定页面按钮就会发生这种情况,因此我认为它与分页的编写方式有关。更具体地,我认为它与request.GET.items 有关。上下文管理器是否使用request.GET.items?
分页:
{% if page_obj.has_next %}
<a class="btn btn-default btn-inactive mb-4 m-1"
href="?page={{ page_obj.next_page_number }}{% for key, value in request.GET.items %}
{% if key != 'page' %}&{{ key }}={{ value }}{% endif %}{% endfor %}">Next</a>
<a class="btn btn-default btn-inactive mb-4 m-1"
href="?page={{ page_obj.paginator.num_pages }}{% for key, value in request.GET.items %}
{% if key != 'page' %}&{{ key }}={{ value }}{% endif %}{% endfor %}">Last</a>
{% endif %}
查看:
class AccountStatusListView(AccountSearchMixin, ListView):
model = Employee
template_name = 'employees/account_list.html'
paginate_by = 15
def get_ordering(self, *args, **kwargs):
ordering = self.request.GET.get('ordering', '-is_active')
return ordering
def get_queryset(self, *args, **kwargs):
queryset = super(AccountStatusListView, self).get_queryset()
queryset = queryset.filter(Q(
supervisor__exact=self.request.user)) | queryset.filter(Q(
supervisor__isnull=False)) | queryset.filter(Q(
is_active__exact=False))
ordering = self.get_ordering()
if ordering and isinstance(ordering, str):
ordering = (ordering,)
queryset = queryset.order_by(*ordering)
return queryset
有人知道这里发生了什么吗?
【问题讨论】:
-
for循环将呈现空间。 -
我该如何解决这个问题?有没有办法避免这种情况?奇怪的是它只是偶尔发生。我是否必须明确说明要附加到 URL 的内容?似乎效率低下
标签: html python-3.x django