mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-02-02 20:54:42 +03:00
Preserve format query param
This commit is contained in:
parent
9424e59b9e
commit
b4d82a0f55
|
@ -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):
|
||||
"""
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
content running up underneath it. */
|
||||
|
||||
h1 {
|
||||
font-weight: 500;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
h2, h3 {
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in New Issue
Block a user