设置 URL 以在 Django 模板中加载 iframe

Set URL to load iframe in a Django template

我想将 iframe 加载到 Django 模板中。模板已正确加载,但代替 iframe,模板本身已嵌入到父模板中。相关代码如下:

<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 是与此 HTML 模板位于同一目录中的文件,但它不会加载。取而代之的是父模板本身。我查看了 Stack Overflow,从我收集到的一些帖子中,我需要将 iframesrc 属性设置为 Django 视图,这将单独加载 iframe。这个对吗?如果是这样,我该如何配置 URL(即设置视图的路径)?

是的,您必须创建视图才能加载模板。最简单的方法是使用泛型 TemplateView。在您的 urls.py:

中将此 url 添加到 urlpatterns
from django.views.generic import TemplateView

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

<iframe> 标签将如下所示:

<iframe id="encoder_iframe" height=75% width="50%" src="{% url 'testgame' %}">
</iframe>
                   

如果你想在url之外使用,你可以这样做:

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

添加 src 为 http://https://,否则例如它会变成类似 http://127.0.0.1:8000/www.example.com/testgame.html