2016-08-13 52 views
0

我正在嘗試使用Django建立博客。我直接將HTML存儲到模型中。我在HTML文件中使用了{% autoescape off %}{% endautoescape %}標記,這些標記告訴Python不要自動將HTML代碼字符串化。在商標之間,我用{{ article.content }}這樣的代碼來加載存儲在模型中的HTML代碼。django「autoescape off」標記之間的Python代碼無法執行

問題是,<img src="{% static 'img/dot.png' %}">(存儲在模型中的HTML代碼)將顯示爲{%%20static%20'img/dot.png'%20%}。 python代碼不會被執行。

我感到無奈。有沒有人有一個好主意?

這裏是一個模板的例子:

{% extends "base.html" %} 

{% block content %} 
    {% load static %} 
     <div style='margin:0 auto;width:0px;height:0px;overflow:hidden;'> 
      <img src="{% static 'img/wechat.png' %}"> 
     </div> 
     <header> 
      <div id="logo"> 
       <span class="heading_desktop">You are browsing&nbsp;&nbsp;</span><a href="/index" class="logotype">Paradox</a><span class="heading_tablet">&nbsp;&nbsp;, a personal site</span><span>&nbsp;of&nbsp;</span><a href="/me">Jiawei Lu</a><span class="heading_tablet">&nbsp;since 2015</span><span class="phone_h">.&nbsp;Happy<script>document.write(" " + whatDay());</script>.</span> 
      </div> 
      <nav> 
       <ul> 
        <li><a href="/index" class="selected">Articles</a></li> 
        <li><a href="/portfolio">Portfolio</a></li> 
        <li><a href="/me">Jiawei Lu</a></li> 
       </ul> 
      </nav> 
      <hr class="red"> 
     </header> 

     <div id="breadcrumb" class="article"> 
      <a href="/index">Articles</a> &rarr; {{ article.title }} 
     </div> 

     <div id="wrapper"> 
      <article> 
       <h1 class="article">{{ article.title }}</h1> 
       <div id="post_info"> 
        <p>Published on {{ article.timestamp }}<!--<span>&nbsp;|&nbsp;</span>--></p> 
        <!-- Category inside article <p><a href="#">Category 1</a><a href="#">Category 2</a><span>&nbsp;|&nbsp;</span></p> --> 
        <!-- Share inside article <p>Share: Email/Linkedin</p> --> 
       </div> 
       <div id="post_content" class="article"> 
        {% autoescape off %} 
        {{ article.content }} 
        {% endautoescape %} 
       </div> 
      </article> 
      </div> 
     </div> 
{% endblock %} 

article.content:HTML代碼,就像

<h1>Test</h1> 
<img src="{% static 'img/dot.png' %}"> 
+0

目前還不清楚「模型中存儲的HTML代碼」的含義。您是否試圖從模型字段呈現模板代碼?請顯示您的實際模板。 –

+0

添加了模板。希望現在很清楚。 –

回答

0

這並不真的有什麼關係autoescaping。當Django輸出一個變量時,它不會做任何事情來解釋變量中的任何內容;所以將模板標籤放入模型字段將不起作用。

您需要自己手動呈現數據;也許是一個自定義模板標籤或模型方法,它使用Template API實例化一個模板對象並調用它的render方法。