亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何用 django 渲染 html?

如何用 django 渲染 html?

料青山看我應如是 2022-10-13 17:17:17
嗨,我正在練習 Django 和 Python我遇到了解析 HTML 問題,我通過管理頁面保存了一些 html,我嘗試渲染,但它渲染為字符串!這是我模板的一部分描述 <- 列是我的問題其他列渲染得很好{% block content %}<div class="article-detail">    <div class="article">        <img src="{{ article.thumb.url }}" />        <h2>{{ article.title }}</h2>        <p>{{ article.date }}</p>        <div>{{ article.description }}        </div>    </div></div>{% endblock %}這是我的模型from tinymce import HTMLFieldclass Article(models.Model):    title = models.CharField(max_length=100)    slug = models.SlugField()    body = models.TextField()    description = HTMLField('Content', blank=True)    body = models.TextField()    date = models.DateTimeField(auto_now_add=True)    thumb = models.ImageField(default='default.png', blank=True)    ...我的這部分觀點def article_detail(request, slug):    article = Article.objects.get(slug=slug)    return render(request, 'articles/article_detail.html', {'article': article})我嘗試使用 javascript{% block content %}<div class="article-detail">    <div class="article">        <img src="{{ article.thumb.url }}" />        <h2>{{ article.title }}</h2>        <p>{{ article.date }}</p>    </div></div><script>    var article = "<div>{{ article.description }}</div>"    console.log(article);    document.write(article);</script>{% endblock %}我希望這項工作,但我得到了 JS 語法錯誤控制臺不顯示任何東西為什么?如果它轉換為字符串,它應該可以工作....什么是最好的渲染方式?我為我糟糕的英語感到抱歉
查看完整描述

4 回答

?
胡子哥哥

TA貢獻1825條經驗 獲得超6個贊

Django 的模板引擎會自動轉義,所以你真的不需要轉義。

如果你像 {{article.description|safe}} 這樣添加模板過濾器“安全”,那么你確實需要擔心諸如 html 注入之類的事情,因為“安全”將字符串標記為這樣,這意味著它不會被轉義。

還有一個 {% autoescape on %}...{% endautoescape %} 模板標簽,如果需要,可以將其中的“on”更改為“off”。默認情況下它是打開的,并且不需要標簽。

其他模板引擎可能默認不會轉義,Jinja2 就是其中之一。


查看完整回答
反對 回復 2022-10-13
?
飲歌長嘯

TA貢獻1951條經驗 獲得超3個贊

默認情況下,Django 自動轉義模板變量的輸出以避免跨站點腳本。如果要呈現未轉義的字符串,則可以使用safe過濾器或模板塊autoescape,如下所示:


{{ var|safe }}

或者


{% autoescape off %}

    {{ var }}

{% endautoescape %}


查看完整回答
反對 回復 2022-10-13
?
慕容森

TA貢獻1853條經驗 獲得超18個贊

將安全過濾器添加到您的 html 模板 var。Django 自動轉義 html 以防止 html 注入。您可以通過添加 |safe 來“關閉它”。例如:

<div> {{ article.description|safe }} </div>


查看完整回答
反對 回復 2022-10-13
?
翻翻過去那場雪

TA貢獻2065條經驗 獲得超14個贊

Django 模板處理器正在轉義模型中的 HTML 語法。我認為您需要包含此標頭標記才能使您的 tinyMCE 應用程序正常工作。它是一些可能呈現 HTMLField 的 javascript 代碼。


<head>

    ...

    {{ form.media }}

</head>


查看完整回答
反對 回復 2022-10-13
  • 4 回答
  • 0 關注
  • 178 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號