Preserve format query param

This commit is contained in:
Tom Christie 2015-05-15 09:18:45 +01:00
parent 9424e59b9e
commit b4d82a0f55
3 changed files with 14 additions and 11 deletions

View File

@ -6,6 +6,8 @@ from django.core.urlresolvers import reverse as django_reverse
from django.core.urlresolvers import NoReverseMatch
from django.utils import six
from django.utils.functional import lazy
from rest_framework.settings import api_settings
from rest_framework.utils.urls import replace_query_param
def reverse(viewname, args=None, kwargs=None, request=None, format=None, **extra):
@ -17,14 +19,18 @@ def reverse(viewname, args=None, kwargs=None, request=None, format=None, **extra
scheme = getattr(request, 'versioning_scheme', None)
if scheme is not None:
try:
return scheme.reverse(viewname, args, kwargs, request, format, **extra)
url = scheme.reverse(viewname, args, kwargs, request, format, **extra)
except NoReverseMatch:
# In case the versioning scheme reversal fails, fallback to the
# default implementation
pass
return _reverse(viewname, args, kwargs, request, format, **extra)
url = _reverse(viewname, args, kwargs, request, format, **extra)
else:
url = _reverse(viewname, args, kwargs, request, format, **extra)
FORMAT_OVERRIDE = api_settings.URL_FORMAT_OVERRIDE
if FORMAT_OVERRIDE and (FORMAT_OVERRIDE in request.query_params):
return replace_query_param(url, FORMAT_OVERRIDE, request.query_params[FORMAT_OVERRIDE])
return url
def _reverse(viewname, args=None, kwargs=None, request=None, format=None, **extra):
"""

View File

@ -3,7 +3,7 @@
content running up underneath it. */
h1 {
font-weight: 500;
font-weight: 300;
}
h2, h3 {

View File

@ -73,18 +73,15 @@
<form id="get-form" class="pull-right">
<fieldset>
<div class="btn-group format-selection">
<a class="btn btn-primary" href='{{ request.get_full_path }}'>Format</a>
<button class="btn btn-primary dropdown-toggle" data-toggle="dropdown">
<span class="caret"></span>
Format <span class="caret"></span>
</button>
<ul class="dropdown-menu">
{% for format in available_formats %}
<li>
<a class="js-tooltip format-option"
<a class="format-option"
href='{% add_query_param request api_settings.URL_FORMAT_OVERRIDE format %}'
rel="nofollow"
title="Make a GET request on the {{ name }} resource with the format set to `{{ format }}`">
rel="nofollow">
{{ format }}
</a>
</li>