mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-02-10 00:21:01 +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.core.urlresolvers import NoReverseMatch
|
||||||
from django.utils import six
|
from django.utils import six
|
||||||
from django.utils.functional import lazy
|
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):
|
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)
|
scheme = getattr(request, 'versioning_scheme', None)
|
||||||
if scheme is not None:
|
if scheme is not None:
|
||||||
try:
|
try:
|
||||||
return scheme.reverse(viewname, args, kwargs, request, format, **extra)
|
url = scheme.reverse(viewname, args, kwargs, request, format, **extra)
|
||||||
except NoReverseMatch:
|
except NoReverseMatch:
|
||||||
# In case the versioning scheme reversal fails, fallback to the
|
# In case the versioning scheme reversal fails, fallback to the
|
||||||
# default implementation
|
# default implementation
|
||||||
pass
|
url = _reverse(viewname, args, kwargs, request, format, **extra)
|
||||||
|
else:
|
||||||
return _reverse(viewname, args, kwargs, request, format, **extra)
|
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):
|
def _reverse(viewname, args=None, kwargs=None, request=None, format=None, **extra):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
content running up underneath it. */
|
content running up underneath it. */
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
font-weight: 500;
|
font-weight: 300;
|
||||||
}
|
}
|
||||||
|
|
||||||
h2, h3 {
|
h2, h3 {
|
||||||
|
|
|
@ -73,18 +73,15 @@
|
||||||
<form id="get-form" class="pull-right">
|
<form id="get-form" class="pull-right">
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<div class="btn-group format-selection">
|
<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">
|
<button class="btn btn-primary dropdown-toggle" data-toggle="dropdown">
|
||||||
<span class="caret"></span>
|
Format <span class="caret"></span>
|
||||||
</button>
|
</button>
|
||||||
<ul class="dropdown-menu">
|
<ul class="dropdown-menu">
|
||||||
{% for format in available_formats %}
|
{% for format in available_formats %}
|
||||||
<li>
|
<li>
|
||||||
<a class="js-tooltip format-option"
|
<a class="format-option"
|
||||||
href='{% add_query_param request api_settings.URL_FORMAT_OVERRIDE format %}'
|
href='{% add_query_param request api_settings.URL_FORMAT_OVERRIDE format %}'
|
||||||
rel="nofollow"
|
rel="nofollow">
|
||||||
title="Make a GET request on the {{ name }} resource with the format set to `{{ format }}`">
|
|
||||||
{{ format }}
|
{{ format }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user