Django Slice Queryset通过GETAttribu安全设置

2024-09-27 00:17:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样的列表视图:

from django.views.generic import ListView

class SomeListView(ListView):
    def get_queryset(self):
        qs = super(SomeListView, self).get_queryset()
        limit = self.request.GET.get('limit', None)

        if limit:
            return qs[:limit]
        return qs

现在这还不是一个理想的解决方案来处理这样的切片功能

  • 对TypeErrors开放(可以修复,但需要另一个try-exept)
  • 不是很优雅

有没有更好的方法通过GET切片查询集?你知道吗


Tags: djangofromself视图列表getreturn切片
1条回答
网友
1楼 · 发布于 2024-09-27 00:17:43

您可以使用表单来处理所有验证内容,并将默认值设置为限制字段。我会做一张表格

class SliceForm(forms.Form):
    limit = forms.IntegerField(min_value=1)

然后像这样在你的视野中使用它

def get_queryset(self):
    qs = super(...).get_queryset()
    form = SliceForm(self.request.GET)

    if form.is_valid():
        return qs[:form.cleaned_data['limit']]
    else:
        return qs

相关问题 更多 >

    热门问题