2010-06-28 41 views
0

我目前正在使用django的網站上工作,我的問題是該網站必須從使用php腳本移植到使用django。 儘管前一個維護人員對網站內容進行了很好的維護,但我必須使用markdown來處理已經擁有大量內容的文件,例如主目錄被分成三個文件,如a.html, b.html,c.html雖然都包含簡單的文本內容,但是我必須單獨渲染它們,我應該使用view.py文件來解析結構還是使用相同的模板,真正的問題是如何解析文件裏面的內容模板在使用Django的文件中使用標記

我寫了一個模板:

{% 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 %} 

這是包含的文件,我需要解析: - {%包括「功能/ about.html」%} 但任何人都會明白,這將只顯示文件內容而不是解析的html。感謝提前幫助

回答

0

{%include%}標記只處理Django模板文件,並且不支持任何自定義處理,例如處理markdown和自身。您有幾種選擇:

  • 你可以用所有的模板中包含的降價內容與{% load markup %}{% filter markdown %}{% endfilter %}filter tag將指定的過濾器應用於其內容。您需要在每個模板的開頭都有{% load markup %}行,因爲每個模板都需要加載它使用的其他標記庫。
  • 您的視圖可以加載內容並將其作爲上下文變量提供,以便您可以在模板中執行類似{{ aboutcontent|markdown }}的操作(其中aboutcontent是您的視圖提供的上下文變量)。
    • 您的看法也可以爲你做降價轉換,所以你只需要做{{ aboutcontent }}
  • 你可以寫一個自定義的templatetag,做裝載和降價轉換爲你,但這是更爲複雜,你可能會更好用的其他選項之一,或者乾脆重新思考和更新模板不需要這個處理。
+0

感謝您的快速回復,解決方案是按照您所說的使用「加載」標記,並將該功能擴展爲從視圖函數調用的基本模板,現在就可以使用。 – dart 2010-06-28 07:34:12

+0

您還可以使用render_to_string將模板呈現給視圖中的字符串,然後在實際將最終模板呈現給響應之前通過降價處理器運行它。 – Max 2011-04-29 17:11:45

相關問題