If versioning is being used then we pass any `reverse` calls through to the versioning scheme instance, so that the resulting URL can be modified if needed.
(viewname, args=None, kwargs=None, request=None, format=None, **extra)
| 30 | |
| 31 | |
| 32 | def reverse(viewname, args=None, kwargs=None, request=None, format=None, **extra): |
| 33 | """ |
| 34 | If versioning is being used then we pass any `reverse` calls through |
| 35 | to the versioning scheme instance, so that the resulting URL |
| 36 | can be modified if needed. |
| 37 | """ |
| 38 | scheme = getattr(request, 'versioning_scheme', None) |
| 39 | if scheme is not None: |
| 40 | try: |
| 41 | url = scheme.reverse(viewname, args, kwargs, request, format, **extra) |
| 42 | except NoReverseMatch: |
| 43 | # In case the versioning scheme reversal fails, fallback to the |
| 44 | # default implementation |
| 45 | url = _reverse(viewname, args, kwargs, request, format, **extra) |
| 46 | else: |
| 47 | url = _reverse(viewname, args, kwargs, request, format, **extra) |
| 48 | |
| 49 | return preserve_builtin_query_params(url, request) |
| 50 | |
| 51 | |
| 52 | def _reverse(viewname, args=None, kwargs=None, request=None, format=None, **extra): |