如何解决从 Django 表单中过滤出来的分页结果
我正在尝试对从 Django 表单 GET 请求过滤的结果进行分页。但是,当我单击第二页时,它会将我重定向到表单页面。我搜索了类似的问题并尝试了几种方法,但不知何故这仍然不起作用。下面是我的代码截图。任何帮助将不胜感激。
view.py
def get_pictures_by_filters(request):
if request.method == 'GET':
form = GetPictureForm(request.GET)
if form.is_valid():
name = form.get_name()
problem = form.get_problem()
language = form.get_language()
pictures = Picture.objects.filter(relatedGame=name,language__iregex=r'.*' + language)
if problem:
for p in problem:
pictures = pictures.filter(problem__contains=p)
paginator = Paginator(pictures,1)
page = request.GET.get('page')
try:
pictures = paginator.page(page)
except PageNotAnInteger:
pictures = paginator.page(1)
except EmptyPage:
pictures = paginator.page(paginator.num_pages)
context = {'list_pictures': pictures,'page_obj': pictures}
return render(request,'picture/show_pictures_by_filter.html',context)
form = GetPictureForm()
context = {
'form': form
}
return render(request,'picture/get_pictures_by_filter.html',context)
urls.py
path('pictures/filter',views.get_pictures_by_filters,name='get-pictures'),
forms.py
class GetPictureForm(forms.Form):
def __init__(self,*args,**kwargs):
super(GetPictureForm,self).__init__(*args,**kwargs)
games = [(g.name,g.name) for g in Game.objects.all().order_by('-id')]
problems = [(p.name,p.name) for p in Problem.objects.all()]
self.fields['项目名称'] = forms.CharField(required=True,widget=forms.Select(choices=games))
self.fields['语种'] = forms.CharField(required=False)
self.fields['问题'] = forms.MultipleChoiceField(required=False,widget=forms.CheckBoxSelectMultiple,choices=problems)
def get_name(self):
data = self.cleaned_data['项目名称']
return data
def get_problem(self):
data = self.cleaned_data['问题']
return data
def get_language(self):
data = self.cleaned_data['语种']
return data
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。