Рендеринг iframe из HTML, хранящегося в БД - PullRequest
1 голос
/ 28 сентября 2011

У меня есть шаблон HTML, который я рендеринг с использованием Django. Я передаю все необходимые переменные контекста - my_heading - заголовок, my_html - HTML-код с меткой. Я хотел бы отобразить my_html в iframe.

<html>
    <head>
        <title>Iframe Example</title>
    </head>
    <body>
        <p>{% my_heading %}</p>
        <iframe name="iframe1" width="600" height="400" src="http://www.yahoo.com" frameborder="yes" scrolling="yes"></iframe>
    </body>
</html> 

Ты бы знал, как это сделать? Все примеры, которые я нашел, показывают, что iframe указывает на URL. Я ужасен в HTML и JS. : |

Спасибо

Ответы [ 3 ]

3 голосов
/ 28 сентября 2011

Майкл Клокер не отвечает на ваш вопрос, но ответ, который он дал, является лучшим решением. Тебе лучше сделать это.

Но чтобы ответить на ваш вопрос: вы можете передать только URL-адрес IFrame, поэтому, если вы действительно хотите использовать IFrame, вам нужно настроить второе представление url + в django, чтобы в качестве ответа возвращался my_html. То есть Будет 2 http запроса. 1 для страницы, содержащей IFrame, и 1 запрос для содержимого IFrame.

3 голосов
/ 28 сентября 2011

Если я вас правильно понимаю, вы просто хотите показать HTML-контент, который вы динамически подготовили с помощью Python, в шаблоне Django, правильно?Если это так, вам не нужен Iframe.Iframes необходимы, только если вы хотите интегрировать части другого URI (веб-страницы) в виде фрейма (раздела на вашей веб-странице) на своей странице.Вот пример:

<html>
<head>
    <title>Iframe Example</title>
</head>
<body>
    <p>{% my_heading %}</p>
    <div id="content">{% my_html %}</div>
</body>
</html> 

Дополнение к приведенному выше коду, основано на комментариях ниже.Похоже, вы хотите показать всю страницу с помощью Iframe и что эта вторая страница появляется из другого представления / URL-адреса на вашем ящике.Затем используйте:

<html>
<head>
    <title>Iframe Example</title>
</head>
<body>
    <p>{% my_heading %}</p>
    <iframe src="URL_TO_MY_2ND_VIEW_IN_DJANGO" width="100%" height="300"></iframe>
</body>
</html> 

Объяснение Iframe на W3Schools

Описание Iframe на сайте W3C

0 голосов
/ 28 сентября 2011

Я использовал этот хак, чтобы сделать это.Div скрыт и содержит HTML.IFrame не указывает на местоположение, потому что я не хочу никаких проблем с CORS.Затем я вставляю в него свой HTML-код.

<html>
    <head>
        <title>Iframe Example</title>
    </head>
    <body>
        <p>{% my_heading %}</p>
        <iframe name="iframe2" id="iframe2" width="0" height="0" src="" style="border:0px; overflow-x:hidden;"></iframe>
        <div id="page" style="display:none" >{{ my_html }}</div>

        <script type="text/javascript">

          function getWindow(iframe) {
              return (iframe.contentWindow) ? iframe.contentWindow : (iframe.contentDocument.document) ? iframe.contentDocument.document : iframe.contentDocument;
          }

          getWindow(document.getElementById('iframe2')).document.open();
              getWindow(document.getElementById('iframe2')).document.write(document.getElementById('page').innerHTML);
          getWindow(document.getElementById('iframe2')).document.close();

          document.getElementById('iframe2').style.height = (getWindow(document.getElementById('iframe2')).document.body.scrollHeight + 20) +"px";
          document.getElementById('iframe2').style.width = (document.getElementById('iframe2').parentNode.offsetWidth) +"px";

        </script>
    </body>
</html> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...