Ich baue eine Seite mit Seitenumbruch und einem Filterformular (2 GET-Anfragen). Wenn die URL sowohl Seitenumbruch- als auch Filterergebnisse enthält, etwa /questions/?page=2&all_questions=on
, funktioniert es einwandfrei. Es funktioniert auch, wenn es nur Filterergebnisse hat, etwa /questions/?all_questions=on
.Django - Paginieren mit einer anderen GET-Anfrage; funktioniert nicht mit nur Seitenzahl Seitennummer
Wenn jedoch nur das Seitennummerierungsseitenergebnis angezeigt wird, etwa /questions/?page=1
, werden keine Ergebnisse angezeigt.
So dachte ich, ich muss etwas mit den Ansichten tun, so dass, wenn es nur eine Seitenzahl in der URL gibt, ein Standardfilter gegeben wird. Ich weiß, dass ich wahrscheinlich etwas zum Try-and-Exception-Teil der Paginierung hinzufügen muss, aber ich bin über den eigentlichen Code, den ich schreiben muss, ziemlich ratlos.
def questions_index(request):
user = request.user
form = QuestionFilterForm(request.GET or None)
question_list = []
if not form.is_bound:
question_list = Question.objects.all().order_by('-date_created')
if form.is_valid():
if form.cleaned_data['all_questions'] | (form.cleaned_data['general_questions'] & form.cleaned_data['location_all_gta']) == True:
question_list = Question.objects.all().order_by('-date_created')
elif form.cleaned_data['location_all_gta'] == True:
question_list += Question.objects.filter(question_type=1).order_by('-date_created')
else:
if form.cleaned_data['general_questions'] == True:
question_list += Question.objects.filter(question_type=2).order_by('-date_created')
if form.cleaned_data['location_toronto'] == True:
question_list += Question.objects.filter(location='1').order_by('-date_created')
paginator = Paginator(question_list, 15)
# Pagination
page = request.GET.get('page')
try:
questions = paginator.page(page)
except PageNotAnInteger:
# If page is not an integer, deliver first page.
questions = paginator.page(1)
except EmptyPage:
# If page is out of range (e.g. 9999), deliver last page of results.
questions = paginator.page(paginator.num_pages)
### I need to write something here...
except (url has no filter result)
give default filter
return render(request, 'questions_index.html', {'questions': questions, 'user': user, 'form': form})
Haben Sie versucht: question_list = Question.objects.all() order_by ('- DATE_CREATED') paginator = Paginator (question_list, 15.) questions = paginator.page (Seite) –