I use the code from the documentation to paginate the data:
try:
data = paginator.page(request.GET.get(\'page\'))
except PageNotAnInteger:
page = 1
The easy way would be to include those variables in your template:
<a href="?var1={{var1}}&var2={{var2}}&page={{ data.next_page_number }}">next</a>
Just add var1 and var2 to your context.
That's if the query string variables are originated from your backend. If they're coming from the front-end/external, you could use something like How can I get query string values in JavaScript? in your template and either edit the template vars directly or pass the values to your backend.
You can access parameters from your request directly in your template if you activate django.core.context_processors.request in your settings. See https://docs.djangoproject.com/en/1.7/ref/templates/api/#django-core-context-processors-request
Then you can access parameters in your template directly. In your case you'll need to filter page parameter. You could do something like this:
href="?page={{ data.next_page_number }}{% for key, value in request.GET.items %}{% if key != 'page' %}&{{ key }}={{ value }}{% endif %}{% endfor %}"
Similar to YPCrumble's answer, the following snippet works for me. But the template files could get pretty crowded when there are multiple parameters.
<a href="?p={{ page }}{% if search %}&search={{ search }}{% endif %}">{{ page }}</a>
Note that you must know the parameter names when apply this solution, so it may not fully satisfy your need.
Another possible solution can be to construct parameters list in your view. Pros: you can use clean and expressive methods on QueryDict.
It will be look like this:
get_copy = request.GET.copy()
parameters = get_copy.pop('page', True) and get_copy.urlencode()
context['parameters'] = parameters
That's it! Now you can use your context variable in template:
href="?page={{ paginator.next_page_number }}&{{ parameters }}"
See, code looks clean and nicely.
note: assumes, that your context contained in context dict and your paginator in paginator variable