def search(request, page_number=1): if 'search' in request.session: login = check_sign_in(request) categories = Category.objects.all() data = request.session['search'] args = {'login': login, 'categories': categories, 'tests_category': data.get('category','all'), 'url': '/tests/search/page/'} args.update(csrf(request)) if request.method == 'POST': request.session['search']['text'] = request.POST.get('search','') #Проверка категории if data['category'] == 'all': tests = Test.objects.filter(public_access=True, title__icontains=data['text']) search_category_test = "Все" else: search_category_test = get_object_or_404(Category, url=data['category']) tests = Test.objects.filter(public_access=True, category=search_category_test, title__icontains=data['text']) args['search'] = {'text': data['text'], 'count': tests.count, 'category': search_category_test} current_page = Paginator(tests, 15) if int(page_number) > current_page.num_pages or int(page_number) < 1: raise Http404('Такой страницы нет') args['pages_count'] = get_number_name(current_page.num_pages + 2) args['tests'] = current_page.page(page_number) return render_to_response('tests.html', args) else: raise Http404('Что-то пошло не так')
def tests(request, category = 'all', page_number = 1): login = check_sign_in(request) categories = Category.objects.all() args = {'login': login, 'categories': categories, 'tests_category': category} args.update(csrf(request)) #удаляем сессию поиска, если присутствует if 'search' in request.session: del request.session['search'] if request.method == 'GET': #Проверка категории if category == 'all': tests = Test.objects.filter(public_access=True) args['url'] = '/tests/page/' else: tests = Test.objects.filter(public_access=True, category__url=category) args['url'] = '/tests/category/%s/page/' % category elif request.method == 'POST': title = request.POST.get('search', '') request.session['search'] = {'text': title, 'category': category} return redirect('/tests/search/') #Пагинация current_page = Paginator(tests, 15) if int(page_number) > current_page.num_pages or int(page_number) < 1: raise Http404('Такой страницы нет') args['tests'] = current_page.page(page_number) args['pages_count'] = get_number_name(current_page.num_pages + 2) return render_to_response('tests.html', args)