在Django中使用文件中的标记
我现在正在用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 转换,这样你只需要写
- 你可以写一个自定义的模板标签,来为你处理加载和 markdown 转换,但这会复杂得多,可能不如选择其他选项,或者重新考虑和更新你的模板,使其不需要这种处理。