From 857ef05b07867026ef5084a8f4f0f89db8ad26f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cristi=20V=C3=AEjdea?= Date: Thu, 13 Sep 2018 03:38:13 +0300 Subject: [PATCH] Handle reverse_lazy Fixes #209. --- src/drf_yasg/renderers.py | 4 ++++ testproj/testproj/settings/base.py | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/drf_yasg/renderers.py b/src/drf_yasg/renderers.py index c8c9de3..b1edc6f 100644 --- a/src/drf_yasg/renderers.py +++ b/src/drf_yasg/renderers.py @@ -1,6 +1,7 @@ import six from django.shortcuts import render, resolve_url +from django.utils.functional import Promise from rest_framework.renderers import BaseRenderer, JSONRenderer, TemplateHTMLRenderer from rest_framework.utils import json @@ -81,6 +82,9 @@ class _UIRenderer(BaseRenderer): renderer_context.update(self.get_auth_urls()) def resolve_url(self, to): + if isinstance(to, Promise): + to = str(to) + if to is None: return None diff --git a/testproj/testproj/settings/base.py b/testproj/testproj/settings/base.py index 5e43fea..b01ae5b 100644 --- a/testproj/testproj/settings/base.py +++ b/testproj/testproj/settings/base.py @@ -1,6 +1,8 @@ import os # Build paths inside the project like this: os.path.join(BASE_DIR, ...) +from django.urls import reverse_lazy + BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) ALLOWED_HOSTS = [ @@ -91,7 +93,7 @@ REST_FRAMEWORK = { # drf-yasg SWAGGER_SETTINGS = { - 'LOGIN_URL': '/admin/login', + 'LOGIN_URL': reverse_lazy('admin:login'), 'LOGOUT_URL': '/admin/logout', 'DEFAULT_INFO': 'testproj.urls.swagger_info',