在Django中使用文件中的标记

0 投票
1 回答
647 浏览
提问于 2025-04-16 00:30

我现在正在用Django做一个网站,我遇到的问题是这个网站需要从使用PHP脚本转移到使用Django。虽然之前的维护者对网站内容进行了很好的管理,但我必须使用Markdown来处理那些已经有大量内容的文件。例如,主页被分成了三个文件,分别是a.html、b.html和c.html,虽然它们都只包含简单的文本内容。我需要问的是,我是否需要单独渲染这些文件?我应该在view.py文件中解析结构,还是在模板中处理?真正的问题是,如何在模板内部解析文件的内容。

我写了一个模板:

{% extends "catalog.html" %}

{% block content %}

<div class="yui-g" id="masthead">
<div id="main_feature">
    <div id="main_feature_content">
    {% include "features/main.html" %}
    </div>
</div>
</div>

<div class="yui-g" id="main_information">
<div class="yui-g" style="float: left; width: 49%">
{% include "features/about.html" %}
</div>
<div class="yui-g" style="float: right; width: 49%">
    <h2>Recent Headlines</h2>
    <a href="/news">More</a>
</div>
</div>


<div class="yui-g" id="features_container">
<div id="features">
<div class="feature feature_developer">
    <div class="feature_content">
    {% include "features/1.html" %}
    </div>
</div>

<div class="feature feature_middle feature_community">
    <div class="feature_content">
    {% include "features/2.html" %}
    </div>
</div>

<div class="feature feature_community">
    <div class="feature_content">
    {% include "features/3.html" %}
    </div>
</div>
</div>
</div>


{% endblock %}

这是我需要解析的包含文件:- {% include "features/about.html" %},但大家都知道,这样做只会显示文件的内容,而不是解析后的HTML。谢谢大家的帮助!

1 个回答

0

{% include %} 标签只处理 Django 模板文件,不能自己处理像 markdown 这样的自定义内容。你有几个选择:

  • 你可以把所有的 markdown 内容用 {% load markup %}{% filter markdown %}{% endfilter %} 包裹起来。filter 标签 会把指定的过滤器应用到它的内容上。每个模板开头都需要有 {% load markup %} 这一行,因为每个模板都需要加载它所用的额外标签库。
  • 你的视图可以负责加载内容,并把它作为上下文变量提供,这样你就可以在模板中使用 {{ aboutcontent|markdown }}(这里的 aboutcontent 是你视图提供的上下文变量)。
    • 你的视图也可以为你做 markdown 转换,这样你只需要写 {{ aboutcontent }} 就可以了。
  • 你可以写一个自定义的模板标签,来为你处理加载和 markdown 转换,但这会复杂得多,可能不如选择其他选项,或者重新考虑和更新你的模板,使其不需要这种处理。

撰写回答