Проблема с переменной пути в url в Django v3
Я долго ломал голову над этим вопросом. Мне кажется, что ответ прямо передо мной, но я не могу его увидеть. Я использую django 3 и у меня есть url, который возвращает ошибку.
Мои урлы...
url(r'^(?P<path>.*)$', views.GraphanaProxyView.as_view(), name='grafanadash'),
Мое мнение...
class GraphanaProxyView(ProxyView):
upstream = '{{ip.port}}'
def get_proxy_request_headers(self, request):
headers = super(GraphanaProxyView, self).get_proxy_request_headers(request)
headers['X-WEBAUTH-USER'] = request.user.username
return headers
Я вызываю url из iframe....
<iframe src ="{% url 'grafanadash' %}" width="100%" height="1200px" frameborder="0"></iframe>
Но я получаю следующую ошибку...
NoReverseMatch at /testsite/mt/mtgrafana/
Reverse for 'grafanadash' with no arguments not found. 1 pattern(s) tried: ['testsite\\/mt\\/(?P<path>.*)$']
Я знаю, что технически часть "path" ни на что не указывает, но представление ожидает переменную "path" для использования. Если я просто ввожу адрес в строке "/testsite/mt/grafanadash", он проходит через представление и работает. Если я пытаюсь сделать рендеринг внутри фрейма или просто вызвать его через ссылку, то получаю ошибку. Любая помощь будет принята с благодарностью.
Святая корова! Я только что понял это сразу после того, как опубликовал вопрос. Ответ находится в iframe или url запросе. Просто нужен был заполнитель для переменной "path".
<iframe src ="{% url 'grafanadash' 'path' %}" width="100%" height="1200px" frameborder="0"></iframe>
В ретроспективе это кажется очевидным. Надеюсь, это будет полезно кому-то еще.