【问题标题】:Render static html page inside my base django template在我的基本 django 模板中呈现静态 html 页面
【发布时间】:2012-12-17 21:02:07
【问题描述】:

我正在使用 - 姜戈 1.2 - 阿帕奇 - 修改 WSGI

我有几个由 apache 提供的 HTML 文件。

我想在我的基本模板下呈现那些静态 HTML 页面,以保持我的页眉/页脚和动态菜单完好无损。

我认为它使用 iframe 的一种方式。另一种方法是在渲染时读取 HTML 文件并返回字符串,但在这种情况下,我失去了 apache 的优势,所以我想知道是否有更好的方法,django 的东西是否提供了任何现有的解决方案?

【问题讨论】:

    标签: html django apache django-staticfiles


    【解决方案1】:

    我不确定这是否正是您所要求的,但您可以根据您的需要在带有 ssiinclude 标签的模板中插入一个 html 文件(甚至是另一个模板) :

    {% ssi '/path/to/file.html' %}
    {% include 'relative/path/to/template.html' %}
    

    【讨论】:

      【解决方案2】:

      是的,是include tag

      加载模板并使用当前上下文呈现它。这是在模板中“包含”其他模板的一种方式。

      就这么简单

      {% include "templates/static_template_1.html" %}
      

      或者,如果您在视图侧创建变量:

      {% include template_name_variable %}
      

      它与基本模板(包括它们的模板)共享上下文

      【讨论】:

      • {% include %} 旨在插入另一个模板。 shahjapan 想要插入静态文件。 {% ssi %} 更好,因为它在插入文件之前不解析文件。
      • 哎呀。我读了“html 模板”,可能是因为我上次使用 100% 静态文件已经有一段时间了。是的,那么,ssi 更好! @shahjapan 保留我的答案以供参考,以防您必须使用模板文件而不是静态文件!
      【解决方案3】:

      编辑:

      也许你想在模板系统之外加载 html 文件。那我的方式就不行了。

      一个选项是扩展您的基本模板。

      您的基本模板不应该知道子模板,因为这在逻辑上是错误的。

      例子:

      base_template.html:

      <html>
      <div id='header'></div>
      {% block content %}
          This text can be left out else it it will shown when nothing is loaded here
      {% endblock %}
      

      sub_template.html:

      {% extends "base_template.html" %}
      
      {% block content %}
          <h1>This is my subpage</h1>
      {% endblock %}
      

      您可以在这里阅读更多内容:

      https://docs.djangoproject.com/en/1.2/topics/templates/

      【讨论】:

        猜你喜欢
        • 2020-04-15
        • 2019-10-14
        • 2016-10-21
        • 2013-01-23
        • 1970-01-01
        • 1970-01-01
        • 2014-02-09
        • 2018-08-14
        • 1970-01-01
        相关资源
        最近更新 更多