簡體   English   中英

在django中允許基本的html標記

[英]Allowing basic html markup in django

我正在創建一個處理用戶提交內容的應用程序。 我希望用戶能夠使用基本的html標記使其基於文本的內容看起來很漂亮,即<i> <b> <br>。 但是我確實希望阻止它們使用腳本標記之類的東西。 Django會自動轉義所有內容,因此它也會禁用所有安全標記。 我可以使用以下命令禁用它:

{{ somevar|safe }}{% autoescape off %}

但是,這也將啟用所有有害腳本標記。 Django確實提供了linebreaks過濾器標簽,它將白色空間轉換為br或p標簽,同時保持html安全:

{{ somevar|linebreaks }}

不幸的是,我不知道任何允許使用b或i標簽的過濾器。

所以我想知道這個問題是否有智能解決方案。 如果您建議第三方庫,最好在保存模型或呈現內容時使用解決方案。


UPDATE

最后,我使用了這個解決方案Python HTML清潔劑/擦洗器/過濾器 后一個答案提供了一種使用Beautiful Soup庫從用戶提交的內容中刪除所有不需要的html標簽的方法。 這可以在保存模型之前完成,因此在渲染頁面時可以安全地使用模板過濾器{{ somevar|safe }}

看看django-tinymce吧 它應該為您提供所需的靈活性。 在進入數據庫之前,您將最安全地清理內容。 可以將TinyMCE配置為允許或不允許您喜歡的任何標簽。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM