Quiero cargar un iframe en una plantilla de Django. La plantilla se carga correctamente, pero en lugar del iframe, la plantilla en sí se incrusta dentro de la plantilla principal. El código relevante se da a continuación:

        <body>

                <p>
                        <strong>Player: {{player.username}}</strong>&nbsp;
                        <div id="playerid">{{player.id}}</div><br>
                        <iframe id="encoder_iframe" height=75% width="50%" src="testgame.html"></iframe>
                        <br>
                        <strong>Last score:</strong>&nbsp;
                        <span id="scores"></span><br><br>
                        <strong>Game state:</strong>
                        <div id="gamestate"></span>
                </p>
                <br>
        </body>

"testgame.html" es un archivo ubicado en el mismo directorio que esta plantilla HTML, pero no se carga. En su lugar, aparece la propia plantilla principal. Busqué en estos foros, y de algunas de las publicaciones deduje que necesito establecer el atributo "src" de "iframe" en una vista de Django, que cargará el iframe por separado. ¿Es esto correcto? Si es así, ¿cómo nombro la URL (es decir, establezco la ruta a la vista)?

Me alegraría si me ayudaras con esto. ¡¡Gracias!!

4
user3033194 2 feb. 2015 a las 01:17

2 respuestas

La mejor respuesta

Sí, tienes que crear la vista para cargar la plantilla. La forma simplaset de hacerlo es usar genérico TemplateView. Agrega esta URL a urlpatterns en tu urls.py:

from django.views.generic import TemplateView

url(r'^testgame/', TemplateView.as_view(template_name="testgame.html"),
                   name='testgame'),

Y la etiqueta <iframe> se verá así:

<iframe id="encoder_iframe" height=75% width="50%" src="{% url 'testgame' %}">
</iframe>
15
catavaran 1 feb. 2015 a las 22:23

Si desea utilizar una URL externa, puede hacer lo siguiente:

<iframe id="encoder_iframe" height=75% width="50%" src="http://www.example.com/testgame.html"></iframe>

Agregue src con http:// o https://, de lo contrario, por ejemplo, se convertirá en algo como http://127.0.0.1:8000/www.example.com/testgame.html

0
Ildar Nasurlaev 5 ene. 2021 a las 01:00